Compare commits

...

17 Commits

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 KiB

@ -0,0 +1,8 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

@ -0,0 +1 @@
asset.html

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="@localhost" uuid="4bbf9ab7-43eb-4fc4-af55-9d24b64eada3">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://localhost:3306</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="lib">
<CLASSES>
<root url="jar://$PROJECT_DIR$/culture v1.0(2)/Back-office management/Widget/ueditor/1.4.3/jsp/lib/json.jar!/" />
<root url="jar://$PROJECT_DIR$/culture v1.0(2)/Back-office management/Widget/ueditor/1.4.3/jsp/lib/commons-codec-1.9.jar!/" />
<root url="jar://$PROJECT_DIR$/culture v1.0(2)/Back-office management/Widget/ueditor/1.4.3/jsp/lib/commons-io-2.4.jar!/" />
<root url="jar://$PROJECT_DIR$/culture v1.0(2)/Back-office management/Widget/ueditor/1.4.3/jsp/lib/ueditor-1.1.1.jar!/" />
<root url="jar://$PROJECT_DIR$/culture v1.0(2)/Back-office management/Widget/ueditor/1.4.3/jsp/lib/commons-fileupload-1.3.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

@ -0,0 +1,5 @@
<project version="4">
<component name="ProjectRootManager">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/wenchaung.iml" filepath="$PROJECT_DIR$/wenchaung.iml" />
</modules>
</component>
</project>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$/Go/main.go" dialect="GenericSQL" />
<file url="PROJECT" dialect="MySQL" />
</component>
</project>

@ -0,0 +1,6 @@
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

@ -0,0 +1 @@
wenchuang.sql

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="Go" enabled="true" />
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="wenchuang@localhost" uuid="1c8584d2-1bef-468b-9022-cf4da1eb7bf0">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://localhost:3306/wenchuang</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
<data-source source="LOCAL" name="@localhost" uuid="b525260c-27c3-4d4a-a1ad-d07d39d94694">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://localhost:3306</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/Go.iml" filepath="$PROJECT_DIR$/.idea/Go.iml" />
</modules>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$/wenchuang.sql" dialect="MySQL" />
</component>
</project>

@ -0,0 +1,56 @@
module wechuang
go 1.21.1
require github.com/qiniu/go-sdk/v7 v7.18.2
require (
github.com/gin-contrib/cors v1.4.0
github.com/gin-gonic/gin v1.9.1
github.com/go-sql-driver/mysql v1.7.1
github.com/jinzhu/gorm v1.9.16
github.com/minio/minio-go/v7 v7.0.63
github.com/qwxingzhe/go-object-storage v0.0.0-20211008003114-a2b816ceeacf
gorm.io/driver/mysql v1.5.2
)
require (
github.com/bytedance/sonic v1.10.1 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect
github.com/chenzhuoyu/iasm v0.9.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.15.4 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/google/uuid v1.3.1 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.16.7 // indirect
github.com/klauspost/cpuid/v2 v2.2.5 // indirect
github.com/leodido/go-urn v1.2.4 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/minio/md5-simd v1.1.2 // indirect
github.com/minio/sha256-simd v1.0.1 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
github.com/qwxingzhe/go-file-type v0.0.0-20210904033909-9eb7f61e24f1 // indirect
github.com/rs/xid v1.5.0 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.11 // indirect
golang.org/x/arch v0.5.0 // indirect
golang.org/x/crypto v0.13.0 // indirect
golang.org/x/net v0.15.0 // indirect
golang.org/x/sync v0.4.0 // indirect
golang.org/x/sys v0.12.0 // indirect
golang.org/x/text v0.13.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55 // indirect
)

@ -0,0 +1,226 @@
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM=
github.com/bytedance/sonic v1.10.1 h1:7a1wuFXL1cMy7a3f7/VFcEtriuXQnUBhtoVfOZiaysc=
github.com/bytedance/sonic v1.10.1/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4=
github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ0g/qfRdp61a3Uu/AWrgIq2s0ClJV1g0=
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA=
github.com/chenzhuoyu/iasm v0.9.0 h1:9fhXjVzq5hUy2gkhhgHl95zG2cEAhw9OSGs8toWWAwo=
github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd h1:83Wprp6ROGeiHFAP8WJdI2RoxALQYgdllERc3N5N2DM=
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y=
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU=
github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
github.com/gin-contrib/cors v1.4.0 h1:oJ6gwtUl3lqV0WEIwM/LxPF1QZ5qe2lGWdY2+bz7y0g=
github.com/gin-contrib/cors v1.4.0/go.mod h1:bs9pNM0x/UsmHPBWT2xZz9ROh8xYjYkiURUfmBoMlcs=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk=
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
github.com/go-playground/validator/v10 v10.8.0/go.mod h1:9JhgTzTaE31GZDpH/HSvHiRJrJ3iKAgqqH0Bl/Ocjdk=
github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos=
github.com/go-playground/validator/v10 v10.15.4 h1:zMXza4EpOdooxPel5xDqXEdXG5r+WggpvnAKMsalBjs=
github.com/go-playground/validator/v10 v10.15.4/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4=
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o=
github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg=
github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4=
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.0 h1:mLyGNKR8+Vv9CAU7PphKa2hkEqxxhn8i32J6FPj1/QA=
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
github.com/minio/minio-go/v7 v7.0.63 h1:GbZ2oCvaUdgT5640WJOpyDhhDxvknAJU2/T3yurwcbQ=
github.com/minio/minio-go/v7 v7.0.63/go.mod h1:Q6X7Qjb7WMhvG65qKf4gUgA5XaiSox74kR1uAEjxRS4=
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4=
github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/qiniu/dyn v1.3.0/go.mod h1:E8oERcm8TtwJiZvkQPbcAh0RL8jO1G0VXJMW3FAWdkk=
github.com/qiniu/go-sdk/v7 v7.18.2 h1:vk9eo5OO7aqgAOPF0Ytik/gt7CMKuNgzC/IPkhda6rk=
github.com/qiniu/go-sdk/v7 v7.18.2/go.mod h1:nqoYCNo53ZlGA521RvRethvxUDvXKt4gtYXOwye868w=
github.com/qiniu/x v1.10.5/go.mod h1:03Ni9tj+N2h2aKnAz+6N0Xfl8FwMEDRC2PAlxekASDs=
github.com/qwxingzhe/go-file-type v0.0.0-20210904033909-9eb7f61e24f1 h1:Y1q/Kv60666A8DGWBlUIUjwlXmu1dgypH4PVwSf3tUE=
github.com/qwxingzhe/go-file-type v0.0.0-20210904033909-9eb7f61e24f1/go.mod h1:Bpduqz+NKm2imxr5InLA61iSgVvXwIbB3WIk0+gYXHY=
github.com/qwxingzhe/go-object-storage v0.0.0-20211008003114-a2b816ceeacf h1:O83ZO3ZTJp8RI/AwQnRLAPOfPZsQg45r0w3cROKEIhU=
github.com/qwxingzhe/go-object-storage v0.0.0-20211008003114-a2b816ceeacf/go.mod h1:VHniFqA9a4TNxS5htWLLkwuXgUMAsRqNC6WNrm6wfMU=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU=
github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
golang.org/x/arch v0.5.0 h1:jpGode6huXQxcskEIpOCvrU+tzo81b6+oFLUYXWtH/Y=
golang.org/x/arch v0.5.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck=
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8=
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ=
golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/mysql v1.5.2 h1:QC2HRskSE75wBuOxe0+iCkyJZ+RqpudsQtqkp+IMuXs=
gorm.io/driver/mysql v1.5.2/go.mod h1:pQLhh1Ut/WUAySdTHwBpBv6+JKcj+ua4ZFx1QQTBzb8=
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55 h1:sC1Xj4TYrLqg1n3AN10w871An7wJM0gzgcm8jkIkECQ=
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=

@ -0,0 +1,751 @@
package main
import (
"fmt"
"github.com/qiniu/go-sdk/v7/auth/qbox"
"github.com/qiniu/go-sdk/v7/storage"
"golang.org/x/net/context"
"strconv"
//"golang.org/x/crypto/openpgp/packet"
"net/http"
_ "database/sql"
_ "gorm.io/driver/mysql"
_ "os"
_ "github.com/qwxingzhe/go-object-storage"
_ "github.com/qwxingzhe/go-object-storage/drives"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
_ "github.com/qiniu/go-sdk/v7/auth"
_ "github.com/qiniu/go-sdk/v7/storage"
)
type User struct {
gorm.Model
Name string `gorm:"varchar(255);not null"`
Password string `gorm:"size:255;not null"`
//status string `gorm:"size:255"`
//set_passage_number string `gorm:"size:255"`
//look_passage_number string `gorm:"size:255"`
//_level string `gorm:"size:255"`
Profilepicture string `gorm:"varchar(255);not null"`
Phone string `gorm:"size:255;not null"`
Type string `gorm:"size:255;not null"`
Mail string `gorm:"size:255;not null"`
}
type Passages struct {
gorm.Model
Name string `gorm:"varchar(255);not null"`
Title string `gorm:"varchar(255);not null"`
Passage string `gorm:"varchar(15000);not null"`
Type string `gorm:"varchar(255);not null"`
User_id int `gorm:" int ;not null"`
Cover string `gorm:"varchar(255);not null"`
}
type Managers struct {
gorm.Model
Name string `gorm:"varchar(255);not null"`
Password string `gorm:"size:255;not null"`
Phone string `gorm:"size:255;not null"`
Type string `gorm:"size:255;not null"`
}
type Advertisements struct {
gorm.Model
Title string `gorm:"varchar(255);not null"`
Cover string `gorm:"varchar(255);not null"`
Targetadd string `gorm:"varchar(255);not null"`
}
type Pictures struct {
gorm.Model
Userid string `gorm:"varchar(255);not null"`
Username string `gorm:"varchar(255);not null"`
Title string `gorm:"varchar(255);not null"`
Plocation string `gorm:"varchar(255);not null"`
}
type Passage struct {
gorm.Model
Name string `gorm:"varchar(255);not null"`
Title string `gorm:"varchar(255);not null"`
Type string `gorm:"varchar(255);not null"`
User_id int `gorm:" int ;not null"`
Cover string `gorm:"varchar(255);not null"`
}
// var db1 *sql.DB //连接池对象
//func GetObjectStorage(isAutomaticProductionPath bool) *objectstorage.ObjectStorage {
// return &objectstorage.ObjectStorage{
// Drive: objectstoragedrives.Kodo{
// AccessKey: "GURPB1jK8_mxGBSgUlnWJUKERNMBmOX07iu23MmK",
// SecretKey: "vjWUkGFrKvuhuUj_ep8D-kgF9PBw0dC7pmIhDzvc",
// Bucket: "wenchuangbucket",
// },
// IsAutomaticProductionPath: isAutomaticProductionPath,
// FilePathPrefix: "image/",
// IsAppendExt: false,
// BaseUrl: "http://qynr9haq9.hd-bkt.clouddn.com/",
// }
//}
func main() {
//获取初始化的数据库
db := InitDB()
//延迟关闭数据库
defer db.Close()
//创建一个默认的路由引擎
r := gin.Default()
config := cors.DefaultConfig()
config.AllowOrigins = []string{"*"}
r.Use(cors.New(config))
// 上传图片到七牛云存储
accessKey := "GURPB1jK8_mxGBSgUlnWJUKERNMBmOX07iu23MmK"
secretKey := "vjWUkGFrKvuhuUj_ep8D-kgF9PBw0dC7pmIhDzvc"
bucket := "wenchuangbucket"
putPolicy := storage.PutPolicy{
Scope: bucket,
ReturnBody: `{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}`,
}
putPolicy.Expires = 2592000
mac := qbox.NewMac(accessKey, secretKey)
upToken := putPolicy.UploadToken(mac)
cfg := storage.Config{}
cfg.Region = &storage.ZoneHuabei
// 是否使用https域名
cfg.UseHTTPS = true
// 上传是否使用CDN上传加速
cfg.UseCdnDomains = false
formUploader := storage.NewFormUploader(&cfg)
putExtra := storage.PutExtra{}
ret := storage.PutRet{}
ImgUrl := "http://s3qgokzi8.hb-bkt.clouddn.com/"
//注册
r.POST("/register", func(ctx *gin.Context) {
//获取参数
name := ctx.PostForm("name")
password := ctx.PostForm("password")
picture, _ := ctx.FormFile("profilepicture")
phone := ctx.PostForm("phone")
type1 := ctx.PostForm("type")
mail := ctx.PostForm("mail")
//数据验证
if len(name) == 0 {
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
"code": 422,
"message": "用户名不能为空",
})
return
}
if len(password) < 6 {
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
"code": 422,
"message": "密码不能少于6位",
"password": password,
})
return
}
if len(phone) < 11 {
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
"code": 422,
"message": "电话不能少于11位",
"phone": phone,
})
return
}
src, err1 := picture.Open()
if err1 != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error2": "result.Error.Error()"})
}
key := "profilepicture/" + phone
err := formUploader.Put(context.Background(), &ret, upToken, key, src, picture.Size, &putExtra)
if err != nil {
ctx.JSON(500, gin.H{"error1": err.Error()})
return
}
var profilepicture = ImgUrl + ret.Key
//创建用户
newUser := User{
Name: name,
Password: password,
Profilepicture: profilepicture,
Phone: phone,
Type: type1,
Mail: mail,
}
db.Create(&newUser)
//返回结果
ctx.JSON(http.StatusOK, gin.H{
"code": 200,
"message": "注册成功",
"newUser": newUser,
})
})
//用户登录
r.POST("/login", func(ctx *gin.Context) {
//获取参数
phone := ctx.PostForm("phone")
password := ctx.PostForm("password")
//数据验证
if len(password) < 6 {
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
"code": 422,
"message": "密码不能少于6位",
})
return
}
var user User
db.Where("phone = ?", phone).First(&user)
if password != user.Password {
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
"code": 422,
"message": "密码错误",
})
return
}
if err := ctx.ShouldBind(&user); err == nil {
ctx.JSON(http.StatusOK, gin.H{
"message": "登录成功",
"user": user,
})
} else {
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
})
//管理员注册
r.POST("/manageregister", func(ctx *gin.Context) {
//获取参数
name := ctx.PostForm("name")
password := ctx.PostForm("password")
phone := ctx.PostForm("phone")
type1 := ctx.PostForm("type")
//数据验证
if len(name) == 0 {
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
"code": 422,
"message": "用户名不能为空",
})
return
}
if len(password) < 6 {
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
"code": 422,
"message": "密码不能少于6位",
"password": password,
})
return
}
//创建用户
newUser := Managers{
Name: name,
Password: password,
Phone: phone,
Type: type1,
}
db.Create(&newUser)
//返回结果
ctx.JSON(http.StatusOK, gin.H{
"code": 200,
"message": "注册成功",
"manager": newUser,
})
})
//管理员登陆
r.POST("/managerlogin", func(ctx *gin.Context) {
//获取参数
phone := ctx.PostForm("phone")
password := ctx.PostForm("password")
//数据验证
if len(password) < 6 {
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
"code": 422,
"message": "密码不能少于6位",
})
return
}
var user Managers
db.Where("phone = ?", phone).First(&user)
if password != user.Password {
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
"code": 422,
"message": "密码错误",
})
return
}
if err := ctx.ShouldBind(&user); err == nil {
ctx.JSON(http.StatusOK, gin.H{
"manger": user,
})
} else {
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
})
//删除用户
r.POST("/delete1", func(ctx *gin.Context) {
/////改成查询password
id := ctx.PostForm("id")
sqlStr := `delete from users where id=?`
err := db.Exec(sqlStr, id)
if err != nil {
fmt.Printf("delete faild,err:%v\n", err)
return
}
//返回结果
ctx.JSON(http.StatusOK, gin.H{
"code": 200,
"message": "删除成功",
})
})
/////返回个人信息
r.GET("/information", func(ctx *gin.Context) {
phone := ctx.PostForm("phone")
var user User
db.Where("phone = ?", phone).First(&user)
ctx.JSON(http.StatusOK, gin.H{
"user": user,
})
})
//更新个人信息
r.POST("/upload", func(ctx *gin.Context) {
/////改成查询password
id := ctx.PostForm("id")
name := ctx.PostForm("name")
phone := ctx.PostForm("phone")
//true_name := ctx.PostForm("true_name")
mail := ctx.PostForm("mail")
picture, _ := ctx.FormFile("profilepicture")
src, err1 := picture.Open()
if err1 != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error2": "result.Error.Error()"})
}
key := "profilepicture/" + phone
err := formUploader.Put(context.Background(), &ret, upToken, key, src, picture.Size, &putExtra)
if err != nil {
ctx.JSON(500, gin.H{"error1": err.Error()})
return
}
var profilepicture = ImgUrl + ret.Key
var users User
db.First(&users, "id = ?", id)
db.Model(&users).Updates(
User{
Name: name,
Phone: phone,
Profilepicture: profilepicture,
Mail: mail,
})
var user User
db.First(&user, "id = ?", id)
//返回结果
ctx.JSON(http.StatusOK, gin.H{
"code": 200,
"message": "更新成功",
"user": user,
})
})
//(管理员查找全部用户)
r.POST("/allinformation", func(ctx *gin.Context) {
var user []User
db.Find(&user)
ctx.JSON(http.StatusOK, gin.H{
"user": user,
})
})
//所有管理员
r.GET("/allmanager", func(ctx *gin.Context) {
var manager []Managers
db.Find(&manager)
ctx.JSON(http.StatusOK, gin.H{
"manager": manager,
"number": len(manager),
})
})
/////上传文章(*****)
r.POST("/passage", func(ctx *gin.Context) {
//获取参数
user_id := ctx.PostForm("user_id")
passage := ctx.PostForm("passage")
title := ctx.PostForm("title")
types := ctx.PostForm("type")
name := ctx.PostForm("name")
picture, _ := ctx.FormFile("cover")
//file := map[string]string{
// "passage": passage,
//}
//bytes, _ := json.Marshal(file)
src, err1 := picture.Open()
if err1 != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error2": "result.Error.Error()"})
}
key := "cover/" + title
err := formUploader.Put(context.Background(), &ret, upToken, key, src, picture.Size, &putExtra)
if err != nil {
ctx.JSON(500, gin.H{"error1": err.Error()})
return
}
cover := ImgUrl + ret.Key
//创建文章
l, _ := strconv.Atoi(user_id)
newUser := Passages{
User_id: l,
Passage: passage,
Title: title,
Type: types,
Name: name,
Cover: cover,
}
db.Create(&newUser)
//返回结果
ctx.JSON(http.StatusOK, gin.H{
"passage": newUser,
"code": 200,
"message": "保存成功",
})
})
//打开指定文章
r.POST("/passageinformation", func(ctx *gin.Context) {
id := ctx.PostForm("id")
var passage Passages
db.Where("id = ?", id).First(&passage)
ctx.JSON(http.StatusOK, gin.H{
"passage": passage,
})
})
//用户文章
r.POST("/userpassageinformation", func(ctx *gin.Context) {
var passage []Passages
user_id := ctx.PostForm("user_id")
db.Where("User_id = ?", user_id).Find(&passage)
//user_id := ctx.PostForm("user_id ")
//db.Find(&passage, "user_id = ?", user_id)
ctx.JSON(http.StatusOK, gin.H{
"passage": passage,
})
})
//文章编辑
r.POST("/uploadpassage", func(ctx *gin.Context) {
/////改成查询password
id := ctx.PostForm("id")
user_id := ctx.GetInt("user_id")
passage := ctx.PostForm("passage")
title := ctx.PostForm("title")
types := ctx.PostForm("type")
picture, _ := ctx.FormFile("cover")
var user Passages
db.First(&user, "id = ?", id)
src, err1 := picture.Open()
if err1 != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error2": "result.Error.Error()"})
}
key := "cover/" + title
err := formUploader.Put(context.Background(), &ret, upToken, key, src, picture.Size, &putExtra)
if err != nil {
ctx.JSON(500, gin.H{"error1": err.Error()})
return
}
cover := ImgUrl + ret.Key
db.Model(&user).Updates(
Passages{
User_id: user_id,
Passage: passage,
Title: title,
Type: types,
Cover: cover,
})
//返回结果
ctx.JSON(http.StatusOK, gin.H{
"code": 200,
"message": "更新成功",
})
})
//删除文章
r.POST("/delete", func(ctx *gin.Context) {
id := ctx.PostForm("id")
sqlStr := `delete from passages where id=?`
err := db.Exec(sqlStr, id)
if err != nil {
fmt.Printf("delete faild,err:%v\n", err)
return
}
//返回结果
ctx.JSON(http.StatusOK, gin.H{
"code": 200,
"message": "删除成功",
})
})
//文章查询()查全部////////////////////////
r.GET("/allpassageinformation", func(ctx *gin.Context) {
var passage []Passage
db.Table("passages").Find(&passage)
ctx.JSON(http.StatusOK, gin.H{
"passage": passage,
})
})
//上传图片
r.POST("/picture", func(ctx *gin.Context) {
username := ctx.PostForm("username")
userid := ctx.PostForm("userid")
picture, _ := ctx.FormFile("plocation")
title := ctx.PostForm("title")
src, err1 := picture.Open()
if err1 != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error2": "result.Error.Error()"})
}
key := "image/" + title
err := formUploader.Put(context.Background(), &ret, upToken, key, src, picture.Size, &putExtra)
if err != nil {
ctx.JSON(500, gin.H{"error1": err.Error()})
return
}
plocation := ImgUrl + ret.Key
// 存储图片路径到数据库
pictures := Pictures{
Userid: userid,
Username: username,
Plocation: plocation,
Title: title,
}
result := db.Create(&pictures)
if result.Error != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error3": "result.Error.Error()"})
return
}
if err := ctx.ShouldBind(&pictures); err == nil {
ctx.JSON(http.StatusOK, gin.H{
"code": 200,
"picture": pictures,
})
} else {
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
})
//用户图片
r.POST("/userpicture", func(ctx *gin.Context) {
userid := ctx.PostForm("userid")
var picture []Pictures
db.Where("userid = ?", userid).Find(&picture)
ctx.JSON(http.StatusOK, gin.H{
"picture": picture,
})
})
//指定图片信息
r.POST("/pictureinformation", func(ctx *gin.Context) {
id := ctx.PostForm("id")
var picture Pictures
db.Where("id = ?", id).Find(&picture)
ctx.JSON(http.StatusOK, gin.H{
"picture": picture,
})
})
//删除图片
r.POST("/deletepicture", func(ctx *gin.Context) {
id := ctx.PostForm("id")
sqlStr := `delete from pictures where id=?`
err := db.Exec(sqlStr, id)
if err != nil {
return
}
//返回结果
ctx.JSON(http.StatusOK, gin.H{
"code": 200,
"message": "删除成功",
})
})
//所有图片
r.POST("/allpicture", func(ctx *gin.Context) {
var picture []Pictures
db.Find(&picture)
ctx.JSON(http.StatusOK, gin.H{
"pictures": picture,
})
})
//上传广告
r.POST("/advertisements", func(ctx *gin.Context) {
title := ctx.PostForm("title")
picture, _ := ctx.FormFile("cover")
targetadd := ctx.PostForm("targetadd")
src, err1 := picture.Open()
if err1 != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error2": "result.Error.Error()"})
}
key := "acvertise/" + title
err := formUploader.Put(context.Background(), &ret, upToken, key, src, picture.Size, &putExtra)
if err != nil {
ctx.JSON(500, gin.H{"error1": err.Error()})
return
}
cover := ImgUrl + ret.Key
// 存储图片路径到数据库
advertises := Advertisements{
Title: title,
Cover: cover,
Targetadd: targetadd,
}
result := db.Create(&advertises)
if result.Error != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error3": "result.Error.Error()"})
return
}
if err := ctx.ShouldBind(&advertises); err == nil {
ctx.JSON(http.StatusOK, gin.H{
"code": 200,
"picture": advertises,
})
} else {
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
})
//删除广告
r.POST("/deleteadvertise", func(ctx *gin.Context) {
id := ctx.PostForm("id")
sqlStr := `delete from advertisements where id=?`
err := db.Exec(sqlStr, id)
if err != nil {
fmt.Printf("delete faild,err:%v\n", err)
return
}
//返回结果
ctx.JSON(http.StatusOK, gin.H{
"code": 200,
"message": "删除成功",
})
})
r.POST("/alladvertisements", func(ctx *gin.Context) {
var advertise []Advertisements
db.Find(&advertise)
ctx.JSON(http.StatusOK, gin.H{
"Code": 200,
"advertisements": advertise,
})
})
//在88800端口启动服务
panic(r.Run(":8880"))
}
func InitDB() *gorm.DB {
driverName := "mysql"
host := "127.0.0.1"
port := "3306"
database := "wenchuang"
username := "root"
password := "098poi..."
charset := "utf8"
args := fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=%s&parseTime=true",
username,
password,
host,
port,
database,
charset)
db, _ := gorm.Open(driverName, args)
// if err != nil {
// // if strings.Split(err.Error(), " ")=="" {
// // }
// // dsn := "root:Wozai3ban@tcp(127.0.0.1:3306)/wenchuang"
// // db1, err = sql.Open("mysql", dsn) //open不会检验用户名和密码
// panic("failed to connect database, err:" + err.Error())
// }
//迁移
db.AutoMigrate(&User{}, &Passages{}, &Managers{})
return db
}

@ -0,0 +1,39 @@
/*
Navicat Premium Data Transfer
Source Server : cxc_wc
Source Server Type : MySQL
Source Server Version : 80034
Source Host : localhost:3306
Source Schema : wenchuang
Target Server Type : MySQL
Target Server Version : 80034
File Encoding : 65001
Date: 24/09/2023 21:07:33
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`password` int NOT NULL,
PRIMARY KEY (`username`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('cgj', 123456);
INSERT INTO `user` VALUES ('clj', 123456);
INSERT INTO `user` VALUES ('cqh', 123456);
INSERT INTO `user` VALUES ('cxc', 123456);
INSERT INTO `user` VALUES ('czk', 123456);
SET FOREIGN_KEY_CHECKS = 1;

@ -0,0 +1,30 @@
{
"extends": [
"development"
],
"hints": {
"meta-viewport": "off",
"axe/forms": [
"default",
{
"label": "off",
"select-name": "off"
}
],
"no-inline-styles": "off",
"axe/text-alternatives": [
"default",
{
"image-alt": "off"
}
],
"axe/language": [
"default",
{
"html-has-lang": "off"
}
],
"apple-touch-icons": "off",
"button-type": "off"
}
}

@ -0,0 +1,14 @@
{
// 使 IntelliSense
//
// 访: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "msedge",
"request": "launch",
"name": "Open page.html",
"file": "c:\\Users\\toutiexian\\Desktop\\wenchaung\\culture v1.0 (2)\\culture\\page.html"
}
]
}

@ -0,0 +1,138 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="css/style.css" />
<link href="assets/css/codemirror.css" rel="stylesheet">
<link rel="stylesheet" href="assets/css/ace.min.css" />
<link rel="stylesheet" href="Widget/zTree/css/zTreeStyle/zTreeStyle.css" type="text/css">
<link rel="stylesheet" href="assets/css/font-awesome.min.css" />
<script src="assets/js/jquery.min.js"></script>
<script type="text/javascript">
window.jQuery || document.write("<script src='assets/js/jquery-2.0.3.min.js'>" + "<" + "/script>");
</script>
<script src="assets/js/ace-elements.min.js"></script>
<script src="assets/js/ace.min.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
<script src="assets/js/typeahead-bs2.min.js"></script>
<script type="text/javascript" src="Widget/zTree/js/jquery.ztree.all-3.5.min.js"></script>
<script src="js/lrtk.js" type="text/javascript"></script>
<title>分类管理</title>
</head>
<body>
<div class=" clearfix">
<div id="category">
<div id="scrollsidebar" class="left_Treeview">
<div class="show_btn" id="rightArrow"><span></span></div>
<div class="widget-box side_content">
<div class="side_title"><a title="隐藏" class="close_btn"><span></span></a></div>
<div class="side_list">
<div class="widget-header header-color-green2">
<h4 class="lighter smaller">产品类型列表</h4>
</div>
<div class="widget-body">
<div class="widget-main padding-8">
<div id="treeDemo" class="ztree"></div>
</div>
</div>
</div>
</div>
</div>
<iframe ID="testIframe" Name="testIframe" FRAMEBORDER=0 SCROLLING=AUTO SRC="product-category-add.html"
class="page_right_style"></iframe>
</div>
</div>
</body>
</html>
<script type="text/javascript">
$(function () {
$("#category").fix({
float: 'left',
//minStatue : true,
skin: 'green',
durationTime: false
});
});
</script>
<script type="text/javascript">
//初始化宽度、高度
$(".widget-box").height($(window).height());
$(".page_right_style").width($(window).width() - 220);
//当文档窗口发生改变时 触发
$(window).resize(function () {
$(".widget-box").height($(window).height());
$(".page_right_style").width($(window).width() - 220);
})
/**************/
var setting = {
view: {
dblClickExpand: false,
showLine: false,
selectedMulti: false
},
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId",
rootPId: ""
}
},
callback: {
beforeClick: function (treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("tree");
if (treeNode.isParent) {
zTree.expandNode(treeNode);
return false;
} else {
demoIframe.attr("src", treeNode.file + ".html");
return true;
}
}
}
};
var zNodes = [
{ id: 1, pId: 0, name: "文章分类列表", open: true },
{ id: 11, pId: 1, name: "旅游纪念品" },
// { id: 111, pId: 11, name: "蔬菜" },
// { id: 112, pId: 11, name: "苹果" },
// { id: 113, pId: 11, name: "大蒜" },
// { id: 114, pId: 11, name: "白菜" },
// { id: 115, pId: 11, name: "青菜" },
{ id: 12, pId: 1, name: "动漫游戏" },
// { id: 121, pId: 12, name: "手机 " },
// { id: 122, pId: 12, name: "照相机 " },
{ id: 13, pId: 1, name: "影视音像" },
// { id: 131, pId: 13, name: "手机 " },
// { id: 122, pId: 13, name: "照相机 " },
{ id: 14, pId: 1, name: "书画艺术" },
// { id: 141, pId: 14, name: "手机 " },
// { id: 42, pId: 14, name: "照相机 " },
{ id: 15, pId: 1, name: "传媒出版" },
{ id: 16, pId: 1, name: "工艺美术" },
];
var code;
function showCode(str) {
if (!code) code = $("#code");
code.empty();
code.append("<li>" + str + "</li>");
}
$(document).ready(function () {
var t = $("#treeDemo");
t = $.fn.zTree.init(t, setting, zNodes);
demoIframe = $("#testIframe");
demoIframe.bind("load", loadReady);
var zTree = $.fn.zTree.getZTreeObj("tree");
zTree.selectNode(zTree.getNodeByParam("id", '11'));
});
</script>

@ -0,0 +1,147 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="css/style.css"/>
<link href="assets/css/codemirror.css" rel="stylesheet">
<link rel="stylesheet" href="assets/css/ace.min.css" />
<link rel="stylesheet" href="font/css/font-awesome.min.css" />
<script src="js/jquery-1.9.1.min.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
<script src="assets/js/typeahead-bs2.min.js"></script>
<script src="assets/js/jquery.dataTables.min.js"></script>
<script src="assets/js/jquery.dataTables.bootstrap.js"></script>
<script src="assets/layer/layer.js" type="text/javascript" ></script>
<script src="assets/laydate/laydate.js" type="text/javascript"></script>
<script src="js/lrtk.js" type="text/javascript" ></script>
<title>个人账户</title>
</head>
<body>
<div class="margin clearfix">
<div class="cover_style" id="cover_style">
<div class="search_style">
<ul class="search_content clearfix">
<li><label class="l_f">用户</label><input name="" type="text" class="text_add" placeholder="用户名称" style=" width:250px"></li>
<li style="width:90px;"><button type="button" class="btn_search"><i class="fa fa-search"></i>查询</button></li>
</ul>
</div>
<!--操作-->
<div class="border clearfix">
<span class="l_f">
<a href="javascript:ovid()" class="btn btn-danger"><i class="fa fa-bar-chart"></i>&nbsp;图表展示</a>
</span>
<span class="r_f">共:<b>2334</b>个账户</span>
</div>
<!--账户管理-->
<div class="">
<table class="table table-striped table-bordered table-hover" id="sample-table">
<thead>
<tr>
<th width=""><label><input type="checkbox" class="ace"><span class="lbl"></span></label></th>
<th width="">ID</th>
<th width="">用户名</th>
<th width="">账户余额</th>
<th width="">最新消费</th>
<th width="">消费时间</th>
<th width="">账户状态</th>
<th width="">操作</th>
</tr>
</thead>
<tbody>
<!-- <tr>
<td> <label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
<td>1</td>
<td><u style="cursor:pointer" class="text-primary" onclick="member_show('张小泉','member-show.html','1031','500','400')">张奶奶</u></td>
<td>345.2</td>
<td>购买商品消费122元</td>
<td>2016-7-21 12:45</td>
<td class="td-status"><span class="label label-success radius">启用</span></td>
<td class="td-manage">
<a onClick="member_stop(this,'10001')" href="javascript:;" title="启用" class="btn btn-xs btn-success"><i class="fa fa-check bigger-120"></i></a>
<a href="javascript:ovid()" name="Account_Details.html" class="btn btn-xs btn-warning Account_Details" onclick="generateOrders('511');" title="张奶奶账户详细" >
<i class="fa fa-list-ul bigger-120"></i></a>
</td>
</tr>
<tr>
<td> <label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
<td>12</td>
<td><u style="cursor:pointer" class="text-primary" onclick="member_show('张小泉','member-show.html','1031','500','400')">张小泉</u></td>
<td>345.2</td>
<td>购买商品消费122元</td>
<td>2016-7-21 12:45</td>
<td class="td-status"><span class="label label-success radius">启用</span></td>
<td class="td-manage">
<a onClick="member_stop(this,'10001')" href="javascript:;" title="启用" class="btn btn-xs btn-success"><i class="fa fa-check bigger-120"></i></a>
<a href="javascript:ovid()" name="Account_Details.html" class="btn btn-xs btn-warning Account_Details" onclick="generateOrders('561');" title="张小泉账户详细" >
<i class="fa fa-list-ul bigger-120"></i></a>
</td>
</tr> -->
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
<script type="text/javascript">
/*用户-停用*/
function member_stop(obj,id){
layer.confirm('确认要停用该账户吗?',function(index){
$(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" class="btn btn-xs " onClick="member_start(this,id)" href="javascript:;" title="启用"><i class="fa fa-close bigger-120"></i></a>');
$(obj).parents("tr").find(".td-status").html('<span class="label label-defaunt radius">停用</span>');
$(obj).remove();
layer.msg('停用!',{icon: 5,time:1000});
});
}
/*用户-启用*/
function member_start(obj,id){
layer.confirm('确认要启用该账户吗?',function(index){
$(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" class="btn btn-xs btn-success" onClick="member_stop(this,id)" href="javascript:;" title="停用"><i class="fa fa-check bigger-120"></i></a>');
$(obj).parents("tr").find(".td-status").html('<span class="label label-success radius">启用</span>');
$(obj).remove();
layer.msg('启用!',{icon: 6,time:1000});
});
}
jQuery(function($) {
var oTable1 = $('#sample-table').dataTable( {
"aaSorting": [[ 1, "desc" ]],//默认第几个排序
"bStateSave": true,//状态保存
"bAutoWidth":true,
"aoColumnDefs": [
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
{"orderable":false,"aTargets":[0,2,3,4,6,7,8,9]}// 制定列不参与排序
] } );
$('table th input:checkbox').on('click' , function(){
var that = this;
$(this).closest('table').find('tr > td:first-child input:checkbox')
.each(function(){
this.checked = that.checked;
$(this).closest('tr').toggleClass('selected');
});
});
});
var index = parent.layer.getFrameIndex(window.name);
parent.layer.iframeAuto(index);
$('.Order_form ,.Account_Details').on('click', function(){
var cname = $(this).attr("title");
var cnames = parent.$('.Current_page').html();
var herf = parent.$("#iframe").attr("src");
parent.$('#parentIframe span').html(cname);
parent.$('#parentIframe').css("display","inline-block");
parent.$('.Current_page').attr("name",herf).css({"color":"#4c8fbd","cursor":"pointer"});
//parent.$('.Current_page').html("<a href='javascript:void(0)' name="+herf+">" + cnames + "</a>");
parent.layer.close(index);
});
function generateOrders(id){
window.location.href = "Account_Details.html?="+id;
};
</script>

@ -0,0 +1,265 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="css/style.css" />
<link href="assets/css/codemirror.css" rel="stylesheet">
<link rel="stylesheet" href="assets/css/ace.min.css" />
<link rel="stylesheet" href="font/css/font-awesome.min.css" />
<script src="js/jquery-1.9.1.min.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
<script src="assets/js/typeahead-bs2.min.js"></script>
<script src="assets/js/jquery.dataTables.min.js"></script>
<script src="assets/js/jquery.dataTables.bootstrap.js"></script>
<script src="assets/layer/layer.js" type="text/javascript"></script>
<script src="assets/laydate/laydate.js" type="text/javascript"></script>
<script src="js/lrtk.js" type="text/javascript"></script>
<title>订单处理</title>
</head>
<body>
<div class="clearfix">
<div class="handling_style" id="order_hand">
<div id="scrollsidebar" class="left_Treeview">
<div class="show_btn" id="rightArrow"><span></span></div>
<div class="widget-box side_content">
<div class="side_title"><a title="隐藏" class="close_btn"><span></span></a></div>
<div class="side_list">
<div class="widget-header header-color-green2">
<h4 class="lighter smaller">订单操作</h4>
</div>
<div class="widget-body">
<ul class="b_P_Sort_list">
<li><i class="orange fa fa-reorder"></i><a href="#">全部订单(235)</a></li>
<li><i class="fa fa-sticky-note pink "></i> <a href="#">已完成(235)</a></li>
<li><i class="fa fa-sticky-note pink "></i> <a href="#">代付款(15)</a> </li>
<li><i class="fa fa-sticky-note pink "></i> <a href="#">代发货(56)</a></li>
<li><i class="fa fa-sticky-note pink "></i> <a href="#">代收货(32)</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="order_list_style" id="order_list_style">
<div class="search_style">
<ul class="search_content clearfix">
<li><label class="l_f">订单编号</label><input name="" type="text" class="text_add" placeholder="输入订单编号"
style=" width:250px" /></li>
<li><label class="l_f">交易时间</label><input class="inline laydate-icon" id="start" style=" margin-left:10px;">
</li>
<li style="width:90px;"><button type="button" class="btn_search"><i class="fa fa-search"></i>查询</button>
</li>
</ul>
</div>
<!--交易订单列表-->
<div class="Orderform_list">
<table class="table table-striped table-bordered table-hover" id="sample-table">
<thead>
<tr>
<th width="25px"><label><input type="checkbox" class="ace"><span class="lbl"></span></label></th>
<th width="120px">订单编号</th>
<th width="250px">产品名称</th>
<th width="100px">交易金额</th>
<th width="100px">交易时间</th>
<th width="180px">所属分类</th>
<th width="80px">数量</th>
<th width="70px">状态</th>
<th width="100px">说明</th>
<th width="200px">操作</th>
</tr>
</thead>
<tbody>
<tr>
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
<td>20160705445622</td>
<td class="order_product_name">
<a href="#" class="product_Display"><img src="products/p_1.jpg" title="产品名称" /></a>
<i class="fa fa-plus"></i>
<a href="#" class="product_Display"><img src="products/p_2.jpg" title="产品名称" /></a>
</td>
<td>456.5</td>
<td>2016-7-5</td>
<td>食品</td>
<td>2</td>
<td class="td-status"><span class="label label-success radius">代发货</span></td>
<td></td>
<td>
<a onClick="Delivery_stop(this,'10001')" href="javascript:;" title="发货"
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
class="fa fa-list bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')" class="btn btn-xs btn-warning"><i
class="fa fa-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
<td>20160705445622</td>
<td class="order_product_name">
<a href="#" class="product_Display">
<img src="products/p_1.jpg" title="产品名称" />
</a>
<i class="fa fa-plus"></i>
<a href="#" class="product_Display">
<img src="products/p_2.jpg" title="产品名称" />
</a>
</td>
<td>456.5</td>
<td>2016-7-5</td>
<td>食品</td>
<td>2</td>
<td class="td-status"><span class="label label-success radius">已发货</span></td>
<td></td>
<td>
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
class="fa fa-list bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')" class="btn btn-xs btn-warning"><i
class="fa fa-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
<td>20160705445622</td>
<td class="order_product_name">
<a href="#" class="product_Display"><img src="products/p_1.jpg" title="产品名称" />
</td>
<td>456.5</td>
<td>2016-7-5</td>
<td>食品</td>
<td>2</td>
<td class="td-status"><span class="label label-success radius">失败</span></td>
<td>支付失败</td>
<td>
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
class="fa fa-list bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')" class="btn btn-xs btn-warning"><i
class="fa fa-trash bigger-120"></i></a>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!--发货-->
<div id="Delivery_stop" style=" display:none">
<div class="">
<div class="content_style">
<div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1">快递公司 </label>
<div class="col-sm-9"><select class="form-control" id="form-field-select-1">
<option value="">--选择快递--</option>
<option value="1">天天快递</option>
<option value="2">圆通快递</option>
<option value="3">中通快递</option>
<option value="4">顺丰快递</option>
<option value="5">申通快递</option>
<option value="6">邮政EMS</option>
<option value="7">邮政小包</option>
<option value="8">韵达快递</option>
</select></div>
</div>
<div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1"> 快递号 </label>
<div class="col-sm-9"><input type="text" id="form-field-1" placeholder="快递号" class="col-xs-10 col-sm-5"
style="margin-left:0px;"></div>
</div>
<div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1">货到付款 </label>
<div class="col-sm-9"><label><input name="checkbox" type="checkbox" class="ace" id="checkbox"><span
class="lbl"></span></label></div>
</div>
</div>
</div>
</div>
</body>
</html>
<script>
$(function () {
$("#order_hand").fix({
float: 'left',
//minStatue : true,
skin: 'green',
durationTime: false,
spacingw: 30,//设置隐藏时的距离
spacingh: 250,//设置显示时间距
table_menu: '.order_list_style',
});
});
//时间
laydate({
elem: '#start',
event: 'focus'
});
//初始化宽度、高度
$(".widget-box").height($(window).height());
$(".order_list_style").width($(window).width() - 220);
$(".order_list_style").height($(window).height() - 30);
//当文档窗口发生改变时 触发
$(window).resize(function () {
$(".widget-box").height($(window).height());
$(".order_list_style").width($(window).width() - 234);
$(".order_list_style").height($(window).height() - 30);
});
/**发货**/
function Delivery_stop(obj, id) {
layer.open({
type: 1,
title: '发货',
maxmin: true,
shadeClose: false,
area: ['500px', ''],
content: $('#Delivery_stop'),
btn: ['确定', '取消'],
yes: function (index, layero) {
if ($('#form-field-1').val() == "") {
layer.alert('快递号不能为空!', {
title: '提示框',
icon: 0,
})
} else {
layer.confirm('提交成功!', function (index) {
$(obj).parents("tr").find(".td-manage").prepend('<a style=" display:none" class="btn btn-xs btn-success" onClick="member_stop(this,id)" href="javascript:;" title="已发货"><i class="fa fa-cubes bigger-120"></i></a>');
$(obj).parents("tr").find(".td-status").html('<span class="label label-success radius">已发货</span>');
$(obj).remove();
layer.msg('已发货!', { icon: 6, time: 1000 });
});
layer.close(index);
}
}
})
};
//订单列表
jQuery(function ($) {
var oTable1 = $('#sample-table').dataTable({
"aaSorting": [[1, "desc"]],//默认第几个排序
"bStateSave": true,//状态保存
"aoColumnDefs": [
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
{ "orderable": false, "aTargets": [0, 2, 3, 4, 5, 6, 8, 9] }// 制定列不参与排序
]
});
//全选操作
$('table th input:checkbox').on('click', function () {
var that = this;
$(this).closest('table').find('tr > td:first-child input:checkbox')
.each(function () {
this.checked = that.checked;
$(this).closest('tr').toggleClass('selected');
});
});
});
</script>

@ -0,0 +1,418 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="css/style.css" />
<link href="assets/css/codemirror.css" rel="stylesheet">
<link rel="stylesheet" href="assets/css/ace.min.css" />
<link rel="stylesheet" href="font/css/font-awesome.min.css" />
<script src="js/jquery-1.9.1.min.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/H-ui.js"></script>
<script src="assets/js/typeahead-bs2.min.js"></script>
<script src="assets/js/jquery.dataTables.min.js"></script>
<script src="assets/js/jquery.dataTables.bootstrap.js"></script>
<script src="assets/layer/layer.js" type="text/javascript"></script>
<script src="assets/laydate/laydate.js" type="text/javascript"></script>
<script src="assets/js/jquery.easy-pie-chart.min.js"></script>
<script src="js/lrtk.js" type="text/javascript"></script>
<title>订单管理</title>
</head>
<body>
<div class="margin clearfix">
<div class="cover_style" id="cover_style">
<!--内容-->
<div class="centent_style" id="centent_style">
<div id="covar_list" class="order_list">
<div id="scrollsidebar" class="left_Treeview">
<div class="show_btn" id="rightArrow"><span></span></div>
<div class="widget-box side_content">
<div class="side_title"><a title="隐藏" class="close_btn"><span></span></a></div>
<div class="side_list">
<div class="widget-header header-color-green2">
<h4 class="lighter smaller">订单类型分类</h4>
</div>
<div class="widget-body">
<ul class="b_P_Sort_list">
<li><i class="orange fa fa-reorder"></i><a href="#">全部订单</a></li>
<li><i class="fa fa-sticky-note pink "></i> <a href="#">男装</a></li>
<li><i class="fa fa-sticky-note pink "></i> <a href="#">女装</a> </li>
<li><i class="fa fa-sticky-note pink "></i> <a href="#">童装</a></li>
<li><i class="fa fa-sticky-note pink "></i> <a href="#">鞋靴</a></li>
</ul>
</div>
</div>
</div>
</div>
<!--左侧样式-->
<div class="list_right_style">
<div class="search_style">
<ul class="search_content clearfix">
<li><label class="l_f">订单编号</label><input name="" type="text" class="text_add" placeholder="订单订单编号"
style=" width:250px"></li>
<li><label class="l_f">时间</label><input class="inline laydate-icon" id="start"
style=" margin-left:10px;"></li>
<li style="width:90px;"><button type="button" class="btn_search"><i class="fa fa-search"></i>查询</button>
</li>
</ul>
</div>
<!--订单列表展示-->
<table class="table table-striped table-bordered table-hover" id="sample-table">
<thead>
<tr>
<th width="25px"><label><input type="checkbox" class="ace"><span class="lbl"></span></label></th>
<th width="120px">订单编号</th>
<th width="250px">产品名称</th>
<th width="100px">总价</th>
<th width="100px">优惠</th>
<th width="100px">订单时间</th>
<th width="180px">所属类型</th>
<th width="80px">数量</th>
<th width="70px">状态</th>
<th width="200px">操作</th>
</tr>
</thead>
<tbody>
<!-- <tr>
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
<td>20160705445622</td>
<td class="order_product_name">
<a href="#"><img src="products/p_1.jpg" title="产品名称" /></a>
<i class="fa fa-plus"></i>
<a href="#"><img src="products/p_2.jpg" title="产品名称" /></a>
</td>
<td>456.5</td>
<td>14</td>
<td>2016-7-5</td>
<td>食品</td>
<td>2</td>
<td class="td-status"><span class="label label-success radius">代发货</span></td>
<td>
<a onClick="Delivery_stop(this,'10001')" href="javascript:;" title="发货"
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
class="fa fa-list bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')"
class="btn btn-xs btn-warning"><i class="fa fa-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
<td>20160705445622</td>
<td class="order_product_name">
<a href="#"><img src="products/p_1.jpg" title="产品名称" /></a>
<i class="fa fa-plus"></i>
<a href="#"><img src="products/p_2.jpg" title="产品名称" /></a>
</td>
<td>456.5</td>
<td>14</td>
<td>2016-7-5</td>
<td>食品</td>
<td>2</td>
<td class="td-status"><span class="label label-success radius">代发货</span></td>
<td>
<a onClick="Delivery_stop(this,'10003')" href="javascript:;" title="发货"
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
class="fa fa-list bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')"
class="btn btn-xs btn-warning"><i class="fa fa-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
<td>20160705445622</td>
<td class="order_product_name">
<a href="#"><img src="products/p_1.jpg" title="产品名称" /></a>
<i class="fa fa-plus"></i>
<a href="#"><img src="products/p_2.jpg" title="产品名称" /></a>
</td>
<td>456.5</td>
<td>14</td>
<td>2016-7-5</td>
<td>食品</td>
<td>2</td>
<td class="td-status"><span class="label label-success radius">代发货</span></td>
<td>
<a onClick="Delivery_stop(this,'10005')" href="javascript:;" title="发货"
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
class="fa fa-list bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')"
class="btn btn-xs btn-warning"><i class="fa fa-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
<td>20160705445622</td>
<td class="order_product_name">
<a href="#"><img src="products/p_1.jpg" title="产品名称" /></a>
<i class="fa fa-plus"></i>
<a href="#"><img src="products/p_2.jpg" title="产品名称" /></a>
</td>
<td>456.5</td>
<td>14</td>
<td>2016-7-5</td>
<td>食品</td>
<td>2</td>
<td class="td-status"><span class="label label-success radius">代发货</span></td>
<td>
<a onClick="Delivery_stop(this,'10034')" href="javascript:;" title="发货"
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
class="fa fa-list bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')"
class="btn btn-xs btn-warning"><i class="fa fa-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
<td>20160705445622</td>
<td class="order_product_name">
<a href="#"><img src="products/p_5.jpg" title="产品名称" /></a>
<i class="fa fa-plus"></i>
<a href="#"><img src="products/p_4.jpg" title="产品名称" /></a>
</td>
<td>456.5</td>
<td>14</td>
<td>2016-7-5</td>
<td>食品</td>
<td>2</td>
<td class="td-status"><span class="label label-success radius">代发货</span></td>
<td>
<a onClick="Delivery_stop(this,'10012')" href="javascript:;" title="发货"
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
class="fa fa-list bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')"
class="btn btn-xs btn-warning"><i class="fa fa-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
<td>20160705445622</td>
<td class="order_product_name">
<a href="#"><img src="products/p_3.jpg" title="产品名称" /></a>
<i class="fa fa-plus"></i>
<a href="#"><img src="products/p_7.jpg" title="产品名称" /></a>
</td>
<td>456.5</td>
<td>14</td>
<td>2016-7-5</td>
<td>食品</td>
<td>2</td>
<td class="td-status"><span class="label label-success radius">代发货</span></td>
<td>
<a onClick="Delivery_stop(this,'10061')" href="javascript:;" title="发货"
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
class="fa fa-list bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')"
class="btn btn-xs btn-warning"><i class="fa fa-trash bigger-120"></i></a>
</td>
</tr> -->
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!--发货-->
<div id="Delivery_stop" style=" display:none">
<div class="">
<div class="content_style">
<div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1">快递公司 </label>
<div class="col-sm-9"><select class="form-control" id="form-field-select-1">
<option value="">--选择快递--</option>
<option value="1">天天快递</option>
<option value="2">圆通快递</option>
<option value="3">中通快递</option>
<option value="4">顺丰快递</option>
<option value="5">申通快递</option>
<option value="6">邮政EMS</option>
<option value="7">邮政小包</option>
<option value="8">韵达快递</option>
</select></div>
</div>
<div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1"> 快递号 </label>
<div class="col-sm-9"><input type="text" id="form-field-1" placeholder="快递号" class="col-xs-10 col-sm-5"
style="margin-left:0px;"></div>
</div>
<div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1">货到付款 </label>
<div class="col-sm-9"><label><input name="checkbox" type="checkbox" class="ace" id="checkbox"><span
class="lbl"></span></label></div>
</div>
</div>
</div>
</div>
</body>
</html>
<script>
$(function () {
$("#cover_style").fix({
float: 'top',
minStatue: false,
skin: 'green',
durationTime: false,
window_height: 30,//设置浏览器与div的高度值差
spacingw: 0,//
spacingh: 0,//
close_btn: '.yingchan_btn',
show_btn: '.xianshi_btn',
side_list: '.hide_style',
widgetbox: '.top_style',
close_btn_width: 60,
da_height: '#centent_style,.left_Treeview,.list_right_style',
side_title: '.b_n_btn',
content: null,
left_css: '.left_Treeview,.list_right_style'
});
});
//左侧显示隐藏
$(function () {
$("#covar_list").fix({
float: 'left',
minStatue: false,
skin: false,
//durationTime :false,
spacingw: 50,//设置隐藏时的距离
spacingh: 270,//设置显示时间距
stylewidth: '220',
close_btn: '.close_btn',
show_btn: '.show_btn',
side_list: '.side_list',
content: '.side_content',
widgetbox: '.widget-box',
da_height: null,
table_menu: '.list_right_style'
});
});
//时间选择
laydate({
elem: '#start',
event: 'focus'
});
/*订单-删除*/
function Order_form_del(obj, id) {
layer.confirm('确认要删除吗?', function (index) {
$(obj).parents("tr").remove();
layer.msg('已删除!', { icon: 1, time: 1000 });
});
}
/**发货**/
function Delivery_stop(obj, id) {
layer.open({
type: 1,
title: '发货',
maxmin: true,
shadeClose: false,
area: ['500px', ''],
content: $('#Delivery_stop'),
btn: ['确定', '取消'],
yes: function (index, layero) {
if ($('#form-field-1').val() == "") {
layer.alert('快递号不能为空!', {
title: '提示框',
icon: 0,
})
} else {
layer.confirm('提交成功!', function (index) {
$(obj).parents("tr").find(".td-manage").prepend('<a style=" display:none" class="btn btn-xs btn-success" onClick="member_stop(this,id)" href="javascript:;" title="已发货"><i class="fa fa-cubes bigger-120"></i></a>');
$(obj).parents("tr").find(".td-status").html('<span class="label label-success radius">已发货</span>');
$(obj).remove();
layer.msg('已发货!', { icon: 6, time: 1000 });
});
layer.close(index);
}
}
})
};
//面包屑返回值
var index = parent.layer.getFrameIndex(window.name);
parent.layer.iframeAuto(index);
$('.Order_form,.order_detailed').on('click', function () {
var cname = $(this).attr("title");
var chref = $(this).attr("href");
var cnames = parent.$('.Current_page').html();
var herf = parent.$("#iframe").attr("src");
parent.$('#parentIframe').html(cname);
parent.$('#iframe').attr("src", chref).ready();;
parent.$('#parentIframe').css("display", "inline-block");
parent.$('.Current_page').attr({ "name": herf, "href": "javascript:void(0)" }).css({ "color": "#4c8fbd", "cursor": "pointer" });
//parent.$('.Current_page').html("<a href='javascript:void(0)' name="+herf+" class='iframeurl'>" + cnames + "</a>");
parent.layer.close(index);
});
//初始化宽度、高度
var heights = $(".top_style").outerHeight() + 47;
$(".centent_style").height($(window).height() - heights);
$(".page_right_style").width($(window).width() - 220);
$(".left_Treeview,.list_right_style").height($(window).height() - heights - 2);
$(".list_right_style").width($(window).width() - 250);
//当文档窗口发生改变时 触发
$(window).resize(function () {
$(".centent_style").height($(window).height() - heights);
$(".page_right_style").width($(window).width() - 220);
$(".left_Treeview,.list_right_style").height($(window).height() - heights - 2);
$(".list_right_style").width($(window).width() - 250);
})
//比例
var oldie = /msie\s*(8|7|6)/.test(navigator.userAgent.toLowerCase());
$('.easy-pie-chart.percentage').each(function () {
$(this).easyPieChart({
barColor: $(this).data('color'),
trackColor: '#EEEEEE',
scaleColor: false,
lineCap: 'butt',
lineWidth: 10,
animate: oldie ? false : 1000,
size: 103
}).css('color', $(this).data('color'));
});
$('[data-rel=tooltip]').tooltip();
$('[data-rel=popover]').popover({ html: true });
</script>
<script>
//订单列表
jQuery(function ($) {
var oTable1 = $('#sample-table').dataTable({
"aaSorting": [[1, "desc"]],//默认第几个排序
"bStateSave": true,//状态保存
"aoColumnDefs": [
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
{ "orderable": false, "aTargets": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] }// 制定列不参与排序
]
});
$('table th input:checkbox').on('click', function () {
var that = this;
$(this).closest('table').find('tr > td:first-child input:checkbox')
.each(function () {
this.checked = that.checked;
$(this).closest('tr').toggleClass('selected');
});
});
});
</script>

@ -0,0 +1,454 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport"
content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="css/style.css" />
<link rel="stylesheet" href="assets/css/ace.min.css" />
<link rel="stylesheet" href="assets/css/font-awesome.min.css" />
<link rel="stylesheet" href="Widget/zTree/css/zTreeStyle/zTreeStyle.css" type="text/css">
<link href="Widget/icheck/icheck.css" rel="stylesheet" type="text/css" />
<script src="js/jquery-1.9.1.min.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
<script src="assets/js/typeahead-bs2.min.js"></script>
<script src="assets/js/jquery.dataTables.min.js"></script>
<script src="assets/js/jquery.dataTables.bootstrap.js"></script>
<script type="text/javascript" src="js/H-ui.js"></script>
<script type="text/javascript" src="js/H-ui.admin.js"></script>
<script src="assets/layer/layer.js" type="text/javascript"></script>
<script src="assets/laydate/laydate.js" type="text/javascript"></script>
<script type="text/javascript" src="Widget/zTree/js/jquery.ztree.all-3.5.min.js"></script>
<script src="js/lrtk.js" type="text/javascript"></script>
<title>产品列表</title>
</head>
<body>
<div class=" page-content clearfix">
<div id="products_style">
<div class="search_style">
<ul class="search_content clearfix">
<li><label class="l_f">文章名称</label><input name="" type="text" class="text_add" placeholder="输入文章名称"
style=" width:250px" /></li>
<li><label class="l_f">添加时间</label><input class="inline laydate-icon" id="start" style=" margin-left:10px;">
</li>
<li style="width:90px;"><button type="button" class="btn_search"><i class="icon-search"></i>查询</button></li>
</ul>
</div>
<div class="border clearfix">
<span class="l_f">
<!-- <a href="picture-add.html" title="添加商品" class="btn btn-warning Order_form"><i class="icon-plus"></i>添加文章</a> -->
<a href="javascript:ovid()" class="btn btn-danger"><i class="icon-trash"></i>批量删除</a>
</span>
<span class="r_f">共:<b>2334</b>件商品</span>
</div>
<!--产品列表展示-->
<div class="h_products_list clearfix" id="products_list">
<div id="scrollsidebar" class="left_Treeview">
<div class="show_btn" id="rightArrow"><span></span></div>
<div class="widget-box side_content">
<div class="side_title"><a title="隐藏" class="close_btn"><span></span></a></div>
<div class="side_list">
<div class="widget-header header-color-green2">
<h4 class="lighter smaller">产品类型列表</h4>
</div>
<div class="widget-body">
<div class="widget-main padding-8">
<div id="treeDemo" class="ztree"></div>
</div>
</div>
</div>
</div>
</div>
<div class="table_menu_list" id="testIframe">
<table class="table table-striped table-bordered table-hover" id="sample-table">
<thead>
<tr>
<th width="25px"><label><input type="checkbox" class="ace"><span class="lbl"></span></label></th>
<th width="80px">文章id</th>
<th width="250px">文章名称</th>
<th width="100px">文章关键词</th>
<th width="100px">作者</th>
<th width="100px">文创产品分类</th>
<th width="180px">发布时间</th>
<th width="80px">审核状态</th>
<th width="70px">状态</th>
<th width="200px">操作</th>
</tr>
</thead>
<tbody>
<tr>
<td width="25px"><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
<td width="80px">00001</td>
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">杨家将文创产品,关于历史的厚重</u></td>
<td width="100px">杨家将</td>
<td width="100px">杨家将文创产品官方</td>
<td width="100px">实体画册</td>
<td width="180px">2023-10-11 14:36</td>
<td class="text-l">通过</td>
<td class="td-status"><span class="label label-success radius">已启用</span></td>
<td class="td-manage">
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用"
class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning"><i
class="icon-trash bigger-120"></i></a>
</td>
</tr>
<!-- <tr>
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
<td width="80px">45631</td>
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
<td width="100px">5467</td>
<td width="100px">4525</td>
<td width="100px">法国</td>
<td width="180px">2014-6-11 11:11:42</td>
<td class="text-l">通过</td>
<td class="td-status"><span class="label label-success radius">已启用</span></td>
<td class="td-manage">
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
<td width="80px">45631</td>
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
<td width="100px">5467</td>
<td width="100px">4525</td>
<td width="100px">法国</td>
<td width="180px">2014-6-11 11:11:42</td>
<td class="text-l">通过</td>
<td class="td-status"><span class="label label-success radius">已启用</span></td>
<td class="td-manage">
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
<td width="80px">543346</td>
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
<td width="100px">5467</td>
<td width="100px">4525</td>
<td width="100px">法国</td>
<td width="180px">2014-6-11 11:11:42</td>
<td class="text-l">通过</td>
<td class="td-status"><span class="label label-success radius">已启用</span></td>
<td class="td-manage">
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
<td width="80px">987767</td>
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
<td width="100px">5467</td>
<td width="100px">4525</td>
<td width="100px">法国</td>
<td width="180px">2014-6-11 11:11:42</td>
<td class="text-l">通过</td>
<td class="td-status"><span class="label label-success radius">已启用</span></td>
<td class="td-manage">
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
<td width="80px">54343</td>
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
<td width="100px">5467</td>
<td width="100px">4525</td>
<td width="100px">法国</td>
<td width="180px">2014-6-11 11:11:42</td>
<td class="text-l">通过</td>
<td class="td-status"><span class="label label-success radius">已启用</span></td>
<td class="td-manage">
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
<td width="80px">786554</td>
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
<td width="100px">5467</td>
<td width="100px">4525</td>
<td width="100px">法国</td>
<td width="180px">2014-6-11 11:11:42</td>
<td class="text-l">通过</td>
<td class="td-status"><span class="label label-success radius">已启用</span></td>
<td class="td-manage">
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
<td width="80px">32122</td>
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
<td width="100px">5467</td>
<td width="100px">4525</td>
<td width="100px">法国</td>
<td width="180px">2014-6-11 11:11:42</td>
<td class="text-l">通过</td>
<td class="td-status"><span class="label label-success radius">已启用</span></td>
<td class="td-manage">
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
<td width="80px">767544</td>
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
<td width="100px">5467</td>
<td width="100px">4525</td>
<td width="100px">法国</td>
<td width="180px">2014-6-11 11:11:42</td>
<td class="text-l">通过</td>
<td class="td-status"><span class="label label-success radius">已启用</span></td>
<td class="td-manage">
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
<td width="80px">23466</td>
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
<td width="100px">5467</td>
<td width="100px">4525</td>
<td width="100px">法国</td>
<td width="180px">2014-6-11 11:11:42</td>
<td class="text-l">通过</td>
<td class="td-status"><span class="label label-success radius">已启用</span></td>
<td class="td-manage">
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
</td>
</tr>
<tr>
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
<td width="80px">54533</td>
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
<td width="100px">5467</td>
<td width="100px">4525</td>
<td width="100px">法国</td>
<td width="180px">2014-6-11 11:11:42</td>
<td class="text-l">通过</td>
<td class="td-status"><span class="label label-success radius">已启用</span></td>
<td class="td-manage">
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
</td>
</tr> -->
</tbody>
</table>
</div>
</div>
</div>
</div>
</body>
</html>
<script>
jQuery(function ($) {
var oTable1 = $('#sample-table').dataTable({
"aaSorting": [[1, "desc"]],//默认第几个排序
"bStateSave": true,//状态保存
"aoColumnDefs": [
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
{ "orderable": false, "aTargets": [0, 2, 3, 4, 5, 8, 9] }// 制定列不参与排序
]
});
$('table th input:checkbox').on('click', function () {
var that = this;
$(this).closest('table').find('tr > td:first-child input:checkbox')
.each(function () {
this.checked = that.checked;
$(this).closest('tr').toggleClass('selected');
});
});
$('[data-rel="tooltip"]').tooltip({ placement: tooltip_placement });
function tooltip_placement(context, source) {
var $source = $(source);
var $parent = $source.closest('table')
var off1 = $parent.offset();
var w1 = $parent.width();
var off2 = $source.offset();
var w2 = $source.width();
if (parseInt(off2.left) < parseInt(off1.left) + parseInt(w1 / 2)) return 'right';
return 'left';
}
});
laydate({
elem: '#start',
event: 'focus'
});
$(function () {
$("#products_style").fix({
float: 'left',
//minStatue : true,
skin: 'green',
durationTime: false,
spacingw: 30,//设置隐藏时的距离
spacingh: 260,//设置显示时间距
});
});
</script>
<script type="text/javascript">
//初始化宽度、高度
$(".widget-box").height($(window).height() - 215);
$(".table_menu_list").width($(window).width() - 260);
$(".table_menu_list").height($(window).height() - 215);
//当文档窗口发生改变时 触发
$(window).resize(function () {
$(".widget-box").height($(window).height() - 215);
$(".table_menu_list").width($(window).width() - 260);
$(".table_menu_list").height($(window).height() - 215);
})
/*******树状图*******/
var setting = {
view: {
dblClickExpand: false,
showLine: false,
selectedMulti: false
},
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId",
rootPId: ""
}
},
callback: {
beforeClick: function (treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("tree");
if (treeNode.isParent) {
zTree.expandNode(treeNode);
return false;
} else {
demoIframe.attr("src", treeNode.file + ".html");
return true;
}
}
}
};
var zNodes = [
{ id: 1, pId: 0, name: "文章分类列表", open: true },
{ id: 11, pId: 1, name: "旅游纪念品" },
// { id: 111, pId: 11, name: "蔬菜" },
// { id: 112, pId: 11, name: "苹果" },
// { id: 113, pId: 11, name: "大蒜" },
// { id: 114, pId: 11, name: "白菜" },
// { id: 115, pId: 11, name: "青菜" },
{ id: 12, pId: 1, name: "动漫游戏" },
// { id: 121, pId: 12, name: "手机 " },
// { id: 122, pId: 12, name: "照相机 " },
{ id: 13, pId: 1, name: "影视音像" },
// { id: 131, pId: 13, name: "手机 " },
// { id: 122, pId: 13, name: "照相机 " },
{ id: 14, pId: 1, name: "书画艺术" },
// { id: 141, pId: 14, name: "手机 " },
// { id: 42, pId: 14, name: "照相机 " },
{ id: 15, pId: 1, name: "传媒出版" },
{ id: 16, pId: 1, name: "工艺美术" },
];
var code;
function showCode(str) {
if (!code) code = $("#code");
code.empty();
code.append("<li>" + str + "</li>");
}
$(document).ready(function () {
var t = $("#treeDemo");
t = $.fn.zTree.init(t, setting, zNodes);
demoIframe = $("#testIframe");
demoIframe.bind("load", loadReady);
var zTree = $.fn.zTree.getZTreeObj("tree");
zTree.selectNode(zTree.getNodeByParam("id", '11'));
});
/*产品-停用*/
function member_stop(obj, id) {
layer.confirm('确认要停用吗?', function (index) {
$(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" class="btn btn-xs " onClick="member_start(this,id)" href="javascript:;" title="启用"><i class="icon-ok bigger-120"></i></a>');
$(obj).parents("tr").find(".td-status").html('<span class="label label-defaunt radius">已停用</span>');
$(obj).remove();
layer.msg('已停用!', { icon: 5, time: 1000 });
});
}
/*产品-启用*/
function member_start(obj, id) {
layer.confirm('确认要启用吗?', function (index) {
$(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" class="btn btn-xs btn-success" onClick="member_stop(this,id)" href="javascript:;" title="停用"><i class="icon-ok bigger-120"></i></a>');
$(obj).parents("tr").find(".td-status").html('<span class="label label-success radius">已启用</span>');
$(obj).remove();
layer.msg('已启用!', { icon: 6, time: 1000 });
});
}
/*产品-编辑*/
function member_edit(title, url, id, w, h) {
layer_show(title, url, w, h);
}
/*产品-删除*/
function member_del(obj, id) {
layer.confirm('确认要删除吗?', function (index) {
$(obj).parents("tr").remove();
layer.msg('已删除!', { icon: 1, time: 1000 });
});
}
//面包屑返回值
var index = parent.layer.getFrameIndex(window.name);
parent.layer.iframeAuto(index);
$('.Order_form').on('click', function () {
var cname = $(this).attr("title");
var chref = $(this).attr("href");
var cnames = parent.$('.Current_page').html();
var herf = parent.$("#iframe").attr("src");
parent.$('#parentIframe').html(cname);
parent.$('#iframe').attr("src", chref).ready();;
parent.$('#parentIframe').css("display", "inline-block");
parent.$('.Current_page').attr({ "name": herf, "href": "javascript:void(0)" }).css({ "color": "#4c8fbd", "cursor": "pointer" });
//parent.$('.Current_page').html("<a href='javascript:void(0)' name="+herf+" class='iframeurl'>" + cnames + "</a>");
parent.layer.close(index);
});
</script>

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="css/style.css"/>
<link href="assets/css/codemirror.css" rel="stylesheet">
<link rel="stylesheet" href="assets/css/ace.min.css" />
<link rel="stylesheet" href="font/css/font-awesome.min.css" />
<script src="js/jquery-1.9.1.min.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
<script src="assets/js/typeahead-bs2.min.js"></script>
<script src="assets/js/jquery.dataTables.min.js"></script>
<script src="assets/js/jquery.dataTables.bootstrap.js"></script>
<script src="assets/layer/layer.js" type="text/javascript" ></script>
<script src="js/H-ui.js" type="text/javascript"></script>
<script src="js/displayPart.js" type="text/javascript"></script>
<script src="assets/laydate/laydate.js" type="text/javascript"></script>
<title>系统日志</title>
</head>
<body>
<div class="margin clearfix">
<div id="system_style">
<div class="search_style">
<ul class="search_content clearfix">
<li><label class="l_f">名称</label><input name="" type="text" class="text_add"style=" width:250px"></li>
<li><label class="l_f">时间</label><input class="inline laydate-icon" id="start" style=" margin-left:10px;"></li>
<li style="width:90px;"><button type="button" class="btn_search"><i class="fa fa-search"></i>查询</button></li>
</ul>
</div>
<!--系统日志-->
<div class="system_logs">
<table class="table table-striped table-bordered table-hover" id="sample-table">
<thead>
<tr>
<th width="80px">ID</th>
<th width="120px">登录用户</th>
<th width="120px">角色</th>
<th width="">操作内容</th>
<th width="150px">操作时间</th>
</tr>
</thead>
<tbody>
<!-- <tr>
<td>1233</td>
<td>admin</td>
<td>超级管理员</td>
<td>添加商品名称我的用凤凰花刮大风</td>
<td>2016-7-26 12:34</td>
</tr>
<tr>
<td>3434</td>
<td>admin</td>
<td>超级管理员</td>
<td>添加商品名称我的用凤凰花刮大风</td>
<td>2016-7-26 11:23</td>
</tr>
<tr>
<td>2423</td>
<td>admin</td>
<td>超级管理员</td>
<td>添加商品名称我的用凤凰花刮大风</td>
<td>2016-7-26 13:34</td>
</tr>
<tr>
<td>555</td>
<td>admin</td>
<td>超级管理员</td>
<td>添加商品名称我的用凤凰花刮大风</td>
<td>2016-7-16</td>
</tr>
<tr>
<td>1233</td>
<td>admin</td>
<td>超级管理员</td>
<td>添加商品名称我的用凤凰花刮大风</td>
<td>2016-6-26</td>
</tr>
<tr>
<td>1233</td>
<td>admin</td>
<td>超级管理员</td>
<td>添加商品名称我的用凤凰花刮大风</td>
<td>2016-4-26</td>
</tr>
<tr>
<td>5345</td>
<td>admin</td>
<td>超级管理员</td>
<td>添加商品名称我的用凤凰花刮大风</td>
<td>2016-5-26</td>
</tr> -->
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
<script>
laydate({
elem: '#start',
event: 'focus'
});
$(function() {
var oTable1 = $('#sample-table').dataTable( {
"aaSorting":false,//默认第几个排序
"bStateSave": true,//状态保存
"aoColumnDefs": [
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
{"orderable":false,"aTargets":[0,1,2,3]}// 制定列不参与排序
]});
})
</script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,14 @@
var $lang={
errAlertMsg: "Invalid date or the date out of range,redo or not?",
aWeekStr: ["wk", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
aLongWeekStr:["wk","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
aMonStr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
aLongMonStr: ["January","February","March","April","May","June","July","August","September","October","November","December"],
clearStr: "Clear",
todayStr: "Today",
okStr: "OK",
updateStr: "OK",
timeStr: "Time",
quickStr: "Quick Selection",
err_1: 'MinDate Cannot be bigger than MaxDate!'
}

@ -0,0 +1,14 @@
var $lang={
errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u8303\u56F4,\u9700\u8981\u64A4\u9500\u5417?",
aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],
aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],
aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"],
aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],
clearStr: "\u6E05\u7A7A",
todayStr: "\u4ECA\u5929",
okStr: "\u786E\u5B9A",
updateStr: "\u786E\u5B9A",
timeStr: "\u65F6\u95F4",
quickStr: "\u5FEB\u901F\u9009\u62E9",
err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u65E5\u671F!'
}

@ -0,0 +1,14 @@
var $lang={
errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u7BC4\u570D,\u9700\u8981\u64A4\u92B7\u55CE?",
aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],
aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],
aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"],
aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],
clearStr: "\u6E05\u7A7A",
todayStr: "\u4ECA\u5929",
okStr: "\u78BA\u5B9A",
updateStr: "\u78BA\u5B9A",
timeStr: "\u6642\u9593",
quickStr: "\u5FEB\u901F\u9078\u64C7",
err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u65BC\u6700\u5927\u65E5\u671F!'
}

@ -0,0 +1,9 @@
.Wdate{
background:#fff url(datePicker.gif) no-repeat right;
}
.Wdate::-ms-clear{display:none;}
.WdateFmtErr{
font-weight:bold;
color:red;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

@ -0,0 +1 @@
body,th,td,button,input,select,textarea{font-family:"Microsoft Yahei","Hiragino Sans GB","Helvetica Neue",Helvetica,tahoma,arial,"WenQuanYi Micro Hei",Verdana,sans-serif,"\5B8B\4F53";font-size:12px;color: #333;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing:grayscale}.WdateDiv{width:180px;background-color:#fff;border:#bbb 1px solid;padding:2px}.WdateDiv2{width:360px}.WdateDiv *{font-size:9pt}.WdateDiv .NavImg a{display:block;cursor:pointer;height:16px;width:16px}.WdateDiv .NavImgll a{float:left;background:transparent url(img.gif) no-repeat scroll 0 0}.WdateDiv .NavImgl a{float:left;background:transparent url(img.gif) no-repeat scroll -16px 0}.WdateDiv .NavImgr a{float:right;background:transparent url(img.gif) no-repeat scroll -32px 0}.WdateDiv .NavImgrr a{float:right;background:transparent url(img.gif) no-repeat scroll -48px 0}.WdateDiv #dpTitle{height:24px;margin-bottom:2px;padding:1px}.WdateDiv .yminput{margin-top:2px;text-align:center;height:20px;border:0;width:50px;cursor:pointer}.WdateDiv .yminputfocus{margin-top:2px;text-align:center;font-weight:bold;height:20px;color:blue;border:#ccc 1px solid;width:50px}.WdateDiv .menuSel{z-index:1;position:absolute;background-color:#fff;border:#ddd 1px solid;display:none}.WdateDiv .menu{cursor:pointer;background-color:#fff}.WdateDiv .menuOn{cursor:pointer;background-color:#beebee}.WdateDiv .invalidMenu{color:#aaa}.WdateDiv .YMenu{margin-top:20px}.WdateDiv .MMenu{margin-top:20px;*width:62px}.WdateDiv .hhMenu{margin-top:-90px;margin-left:26px}.WdateDiv .mmMenu{margin-top:-46px;margin-left:26px}.WdateDiv .ssMenu{margin-top:-24px;margin-left:26px}.WdateDiv .Wweek{text-align:center;background:#daf3f5;border-right:#ddd 1px solid}.WdateDiv .MTitle{background-color:#5a98de;color:#fff}.WdateDiv .MTitle td{ color:#fff}.WdateDiv .WdayTable2{border-collapse:collapse;border:#c5d9e8 1px solid}.WdateDiv .WdayTable2 table{border:0}.WdateDiv .WdayTable{line-height:20px;border:#c5d9e8 1px solid}.WdateDiv .WdayTable td{text-align:center;}.WdateDiv .Wday{cursor:pointer}.WdateDiv .WdayOn{cursor:pointer;background-color:#5a98de;color:#fff}.WdateDiv .Wwday{cursor:pointer;color:#ff2f2f}.WdateDiv .WwdayOn{cursor:pointer;color:#fff;background-color:#5a98de}.WdateDiv .Wtoday{cursor:pointer;color:blue}.WdateDiv .Wselday{background-color:#5a98de;color:#fff}.WdateDiv .WspecialDay{background-color:#66f4df}.WdateDiv .WotherDay{cursor:pointer;color:#428bca}.WdateDiv .WotherDayOn{cursor:pointer;background-color:#5a98de;color:#fff}.WdateDiv .WinvalidDay{color:#aaa}.WdateDiv #dpTime{float:left;margin-top:3px;margin-right:30px}.WdateDiv #dpTime #dpTimeStr{margin-left:1px}.WdateDiv #dpTime input{width:18px;height:20px;text-align:center;border:#ccc 1px solid}.WdateDiv #dpTime .tB{border-right:0}.WdateDiv #dpTime .tE{border-left:0;border-right:0}.WdateDiv #dpTime .tm{width:7px;border-left:0;border-right:0}.WdateDiv #dpTime #dpTimeUp{height:10px;width:13px;border:0;background:url(img.gif) no-repeat -32px -16px}.WdateDiv #dpTime #dpTimeDown{height:10px;width:13px;border:0;background:url(img.gif) no-repeat -48px -16px}.WdateDiv #dpQS{float:left;margin-right:3px;margin-top:3px;background:url(img.gif) no-repeat 0 -16px;width:20px;height:20px;cursor:pointer}.WdateDiv #dpControl{text-align:right}.WdateDiv .dpButton{height:20px;width:45px;border:#ccc 1px solid;margin-top:2px;margin-right:1px}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,339 @@
/*
* My97 DatePicker 4.8
* auther : zhangkun , hejianting(design)
* email : zhangkun_net@hotmail.com
* date : 2012-05-25
*/
.WdateDiv
{
position:relative;
padding:5px;
width:180px;
*width:190px;
font-size:12px;
color:#333;
border:solid 1px #DEDEDE;
background-color:#F2F0F1;
}
.WdateDiv2
{
width:360px;
}
.WdateDiv .NavImg a,.WdateDiv .yminput,.WdateDiv .yminputfocus,.WdateDiv #dpQS
{
background:url(img.gif) no-repeat;
}
.WdateDiv .NavImg a
{
float:left;
width:16px;
height:16px;
cursor:pointer;
}
.WdateDiv .NavImgll a
{
background-position:0px 5px;
}
.WdateDiv .NavImgl a
{
background-position:0px -10px;
}
.WdateDiv .NavImgr a
{
background-position:0px -25px;
float:right;
}
.WdateDiv .NavImgrr a
{
background-position:0px -40px;
float:right;
}
.WdateDiv #dpTitle
{
padding:3px 0px 0px 0px;
line-height:0px;
height:20px;
*height:23;
}
.WdateDiv .yminput,.WdateDiv .yminputfocus
{
margin-left:3px;
width:50px;
height:20px;
line-height:16px;
border:solid 1px #F2F0F1;
cursor:pointer;
background-position:35px -68px;
}
.WdateDiv .yminputfocus
{
background-color:#fff;
border:solid 1px #D8D8D8;
}
.WdateDiv .menuSel{
z-index:1;
position:absolute;
background-color:#FFFFFF;
border:#A3C6C8 1px solid;
display:none;
}
.WdateDiv .menu
{
background:#fff;
}
.WdateDiv .menuOn
{
color:#fff;
background:#64A3F3;
}
.WdateDiv .invalidMenu{
color:#aaa;
}
.WdateDiv .MMenu,.WdateDiv .YMenu
{
padding:2px;
margin-top:20px;
margin-left:-1px;
width:68px;
border:solid 1px #D9D9D9;
}
.WdateDiv .MMenu table,.WdateDiv .YMenu table
{
width:100%;
}
.WdateDiv .MMenu table td,.WdateDiv .YMenu table td
{
padding:0px;
line-height:20px;
text-align:center;
font-size:12px;
cursor: pointer;
}
.WdateDiv .Wweek {
text-align:center;
background:#DAF3F5;
border-right:#BDEBEE 1px solid;
}
.WdateDiv td
{
padding:1px;
line-height:20px;
font-size:12px;
color:#999999;
background:#fff;
cursor:pointer;
}
.WdateDiv .MTitle td
{
line-height:24px;
color:#7D7D7D;
background:#F2F0F1;
cursor: default;
}
.WdateDiv .WdayTable2
{
border-collapse:collapse;
border:#808080 1px solid;
}
.WdateDiv .WdayTable2 table
{
border:0;
}
.WdateDiv .WdayTable{
line-height:20px;
color:#13777e;
background-color:#edfbfb;
}
.WdateDiv .WdayTable td{
text-align:center;
}
.WdateDiv .Wday
{
color:#323232;
}
.WdateDiv .WdayOn
{
color:#fff;
background-color:#65A2F3;
}
.WdateDiv .Wwday
{
color:#65A4F3;
}
.WdateDiv .WwdayOn
{
color:#fff;
background-color:#65A2F3;
}
.WdateDiv .Wtoday
{
color:#FF6D10;
background:#E0EDFE;
}
.WdateDiv .Wselday
{
color:#fff;
background-color:#65A2F3;
}
.WdateDiv .WspecialDay{
background-color:#66F4DF;
}
.WdateDiv .WotherDay
{
color:#D4D4D4;
}
.WdateDiv .WotherDayOn
{
color:#fff;
background-color:#65A2F3;
}
.WdateDiv .WinvalidDay{
color:#aaa;
}
.WdateDiv #dpTime
{
position:relative;
margin-top:5px;
}
.WdateDiv #dpTime #dpTimeStr
{
display:inline-block;
width:28px;
*width:30px;
color:#7d7d7d;
}
.WdateDiv #dpTime input
{
padding:0px;
margin:0px;
width:25px;
height:20px;
line-height:20px;
text-align:center;
color:#333;
border:#D9D9D9 1px solid;
}
.WdateDiv #dpTime .tm
{
width:7px;
border:none;
background:#F2F0F1;
}
.WdateDiv #dpTime #dpTimeUp
{
display:none;
}
.WdateDiv #dpTime #dpTimeDown
{
display:none;
}
.WdateDiv #dpQS
{
float:left;
margin-right:3px;
margin-top:9px;
*margin-top:6px;
width:16px;
height:16px;
cursor:pointer;
background-position:0px -90px;
}
.WdateDiv #dpControl
{
text-align:right;
margin-top:3px;
}
.WdateDiv .dpButton
{
margin-left:2px;
line-height:18px;
*line-height:16px;
width:45px;
background-color:#C3C3C3;
*background-color:#64A3F3;
color:#fff;
border:none;
cursor: pointer;
}
.WdateDiv .dpButton:hover
{
background-color:#64A3F3;
}
.WdateDiv .hhMenu,
.WdateDiv .mmMenu,
.WdateDiv .ssMenu
{
position:absolute;
padding:3px;
font-size:12px;
color:#333;
border:solid 1px #DEDEDE;
background-color:#F2F0F1;
}
.WdateDiv #dpTime .menu,.WdateDiv #dpTime .menuOn
{
width:18px;
height:18px;
line-height:18px;
text-align:center;
background:#fff;
}
.WdateDiv #dpTime .menuOn
{
background:#65A2F3;
}
.WdateDiv #dpTime td
{
background:#F2F0F1;
}
.WdateDiv .hhMenu
{
top:-87px;
left:35px;
left:32px\9;
}
.WdateDiv .mmMenu
{
top:-47px;
left:35px;
left:32px\9;
}
.WdateDiv .ssMenu
{
top:-27px;
left:35px;
left:32px\9;
}

@ -0,0 +1 @@
.WdateDiv{position:relative;width:190px;font-size:12px;color:#333;border:solid 1px #DEDEDE;background-color:#F2F0F1;padding:5px;}.WdateDiv2{width:360px;}.WdateDiv .NavImg a,.WdateDiv .yminput,.WdateDiv .yminputfocus,.WdateDiv #dpQS{background:url(img.gif) no-repeat;}.WdateDiv .NavImg a{float:left;width:16px;height:16px;cursor:pointer;}.WdateDiv .NavImgll a{background-position:0 5px;}.WdateDiv .NavImgl a{background-position:0 -10px;}.WdateDiv .NavImgr a{background-position:0 -25px;float:right;}.WdateDiv .NavImgrr a{background-position:0 -40px;float:right;}.WdateDiv #dpTitle{line-height:0;height:23px;padding:3px 0 0;}.WdateDiv .yminput,.WdateDiv .yminputfocus{margin-left:3px;width:50px;height:20px;line-height:16px;border:solid 1px #F2F0F1;cursor:pointer;background-position:35px -68px;}.WdateDiv .yminputfocus{background-color:#fff;border:solid 1px #D8D8D8;}.WdateDiv .menuSel{z-index:1;position:absolute;background-color:#FFF;border:#A3C6C8 1px solid;display:none;}.WdateDiv .menu{background:#fff;}.WdateDiv .menuOn{color:#fff;background:#FFC600;}.WdateDiv .MMenu,.WdateDiv .YMenu{margin-top:20px;margin-left:-1px;width:68px;border:solid 1px #D9D9D9;padding:2px;}.WdateDiv .MMenu table,.WdateDiv .YMenu table{width:100%;}.WdateDiv .MMenu table td,.WdateDiv .YMenu table td{line-height:20px;text-align:center;font-size:14px;cursor:pointer;padding:0;}.WdateDiv .Wweek{text-align:center;background:#DAF3F5;border-right:#BDEBEE 1px solid;}.WdateDiv td{line-height:20px;font-size:12px;color:#999;background:#fff;cursor:pointer;padding:1px;}.WdateDiv .MTitle td{line-height:24px;color:#7D7D7D;background:#F2F0F1;cursor:default;}.WdateDiv .WdayTable2{border-collapse:collapse;border:gray 1px solid;}.WdateDiv .WdayTable2 table{border:0;}.WdateDiv .WdayTable{line-height:20px;color:#13777e;background-color:#edfbfb;}.WdateDiv .WdayTable td{text-align:center;}.WdateDiv .Wday{color:#323232;}.WdateDiv .Wwday{color:#FFC600;}.WdateDiv .Wtoday{color:#FF6D10;background:#E0EDFE;}.WdateDiv .WspecialDay{background-color:#66F4DF;}.WdateDiv .WotherDay{color:#D4D4D4;}.WdateDiv #dpTime{position:relative;margin-top:5px;}.WdateDiv #dpTime #dpTimeStr{display:inline-block;width:30px;color:#7d7d7d;}.WdateDiv #dpTime input{width:25px;height:20px;line-height:20px;text-align:center;color:#333;border:#D9D9D9 1px solid;margin:0;padding:0;}.WdateDiv #dpTime .tm{width:7px;border:none;background:#F2F0F1;}.WdateDiv #dpQS{float:left;margin-right:3px;margin-top:6px;width:16px;height:16px;cursor:pointer;background-position:0 -90px;}.WdateDiv #dpControl{text-align:right;margin-top:3px;}.WdateDiv .dpButton{margin-left:2px;line-height:16px;width:45px;background-color:#FFC600;color:#fff;border:none;cursor:pointer;}.WdateDiv .dpButton:hover{background-color:#FFC600;}.WdateDiv .hhMenu,.WdateDiv .mmMenu,.WdateDiv .ssMenu{position:absolute;font-size:12px;color:#333;border:solid 1px #DEDEDE;background-color:#F2F0F1;padding:3px;}.WdateDiv #dpTime .menu,.WdateDiv #dpTime .menuOn{width:18px;height:18px;line-height:18px;text-align:center;background:#fff;}.WdateDiv #dpTime .menuOn{background:#FFC600;}.WdateDiv #dpTime td{background:#F2F0F1;}.WdateDiv .hhMenu{top:-87px;left:32px;}.WdateDiv .mmMenu{top:-47px;left:32px;}.WdateDiv .ssMenu{top:-27px;left:32px;}.WdateDiv .invalidMenu,.WdateDiv .WinvalidDay{color:#aaa;}.WdateDiv .WdayOn,.WdateDiv .WwdayOn,.WdateDiv .Wselday,.WdateDiv .WotherDayOn{background-color:#FFC600;color:#fff;}.WdateDiv #dpTime #dpTimeUp,.WdateDiv #dpTime #dpTimeDown{display:none;}

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

@ -0,0 +1,256 @@
/*
* My97 DatePicker 4.8 Skin:whyGreen
*/
.WdateDiv{
width:180px;
background-color:#fff;
border:#C5E1E4 1px solid;
padding:2px;
}
.WdateDiv2{
width:360px;
}
.WdateDiv *{font-size:9pt;}
.WdateDiv .NavImg a{
cursor:pointer;
display:block;
width:16px;
height:16px;
margin-top:1px;
}
.WdateDiv .NavImgll a{
float:left;
background:url(img.gif) no-repeat;
}
.WdateDiv .NavImgl a{
float:left;
background:url(img.gif) no-repeat -16px 0px;
}
.WdateDiv .NavImgr a{
float:right;
background:url(img.gif) no-repeat -32px 0px;
}
.WdateDiv .NavImgrr a{
float:right;
background:url(img.gif) no-repeat -48px 0px;
}
.WdateDiv #dpTitle{
height:24px;
padding:1px;
border:#c5d9e8 1px solid;
background:url(bg.jpg);
margin-bottom:2px;
}
.WdateDiv .yminput{
margin-top:2px;
text-align:center;
border:0px;
height:20px;
width:50px;
color:#034c50;
background-color:transparent;
cursor:pointer;
}
.WdateDiv .yminputfocus{
margin-top:2px;
text-align:center;
border:#939393 1px solid;
font-weight:bold;
color:#034c50;
height:20px;
width:50px;
}
.WdateDiv .menuSel{
z-index:1;
position:absolute;
background-color:#FFFFFF;
border:#A3C6C8 1px solid;
display:none;
}
.WdateDiv .menu{
cursor:pointer;
background-color:#fff;
color:#11777C;
}
.WdateDiv .menuOn{
cursor:pointer;
background-color:#BEEBEE;
}
.WdateDiv .invalidMenu{
color:#aaa;
}
.WdateDiv .YMenu{
margin-top:20px;
}
.WdateDiv .MMenu{
margin-top:20px;
*width:62px;
}
.WdateDiv .hhMenu{
margin-top:-90px;
margin-left:26px;
}
.WdateDiv .mmMenu{
margin-top:-46px;
margin-left:26px;
}
.WdateDiv .ssMenu{
margin-top:-24px;
margin-left:26px;
}
.WdateDiv .Wweek {
text-align:center;
background:#DAF3F5;
border-right:#BDEBEE 1px solid;
}
.WdateDiv .MTitle{
color:#13777e;
background-color:#bdebee;
}
.WdateDiv .WdayTable2{
border-collapse:collapse;
border:#BEE9F0 1px solid;
}
.WdateDiv .WdayTable2 table{
border:0;
}
.WdateDiv .WdayTable{
line-height:20px;
color:#13777e;
background-color:#edfbfb;
border:#BEE9F0 1px solid;
}
.WdateDiv .WdayTable td{
text-align:center;
}
.WdateDiv .Wday{
cursor:pointer;
}
.WdateDiv .WdayOn{
cursor:pointer;
background-color:#74d2d9 ;
}
.WdateDiv .Wwday{
cursor:pointer;
color:#ab1e1e;
}
.WdateDiv .WwdayOn{
cursor:pointer;
background-color:#74d2d9;
}
.WdateDiv .Wtoday{
cursor:pointer;
color:blue;
}
.WdateDiv .Wselday{
background-color:#A7E2E7;
}
.WdateDiv .WspecialDay{
background-color:#66F4DF;
}
.WdateDiv .WotherDay{
cursor:pointer;
color:#0099CC;
}
.WdateDiv .WotherDayOn{
cursor:pointer;
background-color:#C0EBEF;
}
.WdateDiv .WinvalidDay{
color:#aaa;
}
.WdateDiv #dpTime{
float:left;
margin-top:3px;
margin-right:30px;
}
.WdateDiv #dpTime #dpTimeStr{
margin-left:1px;
color:#497F7F;
}
.WdateDiv #dpTime input{
height:20px;
width:18px;
text-align:center;
color:#333;
border:#61CAD0 1px solid;
}
.WdateDiv #dpTime .tB{
border-right:0px;
}
.WdateDiv #dpTime .tE{
border-left:0;
border-right:0;
}
.WdateDiv #dpTime .tm{
width:7px;
border-left:0;
border-right:0;
}
.WdateDiv #dpTime #dpTimeUp{
height:10px;
width:13px;
border:0px;
background:url(img.gif) no-repeat -32px -16px;
}
.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;
margin-top:2px;
border:#38B1B9 1px solid;
background-color:#CFEBEE;
color:#08575B;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
(function(a){a.fn.passwordStrength=function(b){b=a.extend({},a.fn.passwordStrength.defaults,b);this.each(function(){var d=a(this),e=0,c=false,f=a(this).parents("form").find(".passwordStrength");d.bind("keyup blur",function(){e=a.fn.passwordStrength.ratepasswd(d.val(),b);e>=0&&c==false&&(c=true);f.find("span").removeClass("bgStrength");if(e<35&&e>=0){f.find("span:first").addClass("bgStrength")}else{if(e<60&&e>=35){f.find("span:lt(2)").addClass("bgStrength")}else{if(e>=60){f.find("span:lt(3)").addClass("bgStrength")}}}if(c&&(d.val().length<b.minLen||d.val().length>b.maxLen)){b.showmsg(d,d.attr("errormsg"),3)}else{if(c){b.showmsg(d,"",2)}}b.trigger(d,!(e>=0))})})};a.fn.passwordStrength.ratepasswd=function(c,d){var b=c.length,e;if(b>=d.minLen&&b<=d.maxLen){e=a.fn.passwordStrength.checkStrong(c)}else{e=-1}return e/4*100};a.fn.passwordStrength.checkStrong=function(d){var e=0,b=d.length;for(var c=0;c<b;c++){e|=a.fn.passwordStrength.charMode(d.charCodeAt(c))}return a.fn.passwordStrength.bitTotal(e)};a.fn.passwordStrength.charMode=function(b){if(b>=48&&b<=57){return 1}else{if(b>=65&&b<=90){return 2}else{if(b>=97&&b<=122){return 4}else{return 8}}}};a.fn.passwordStrength.bitTotal=function(b){var d=0;for(var c=0;c<4;c++){if(b&1){d++}b>>>=1}return d};a.fn.passwordStrength.defaults={minLen:0,maxLen:30,trigger:a.noop}})(jQuery);

@ -0,0 +1,152 @@
/*! DataTables 1.10.0
* ©2008-2014 SpryMedia Ltd - datatables.net/license
*/
(function(za,N,l){var M=function(g){function S(a){var b,c,d={};g.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()),d[c]=e,"o"===b[1]&&S(a[e])});a._hungarianMap=d}function G(a,b,c){a._hungarianMap||S(a);var d;g.each(b,function(e){d=a._hungarianMap[e];if(d!==l&&(c||b[d]===l))"o"===d.charAt(0)?(b[d]||(b[d]={}),g.extend(!0,b[d],b[e]),G(a[d],b[d],c)):b[d]=b[e]})}function M(a){var b=p.defaults.oLanguage,c=a.sZeroRecords;
!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&D(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&D(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&bb(a)}function cb(a){w(a,"ordering","bSort");w(a,"orderMulti","bSortMulti");w(a,"orderClasses","bSortClasses");w(a,"orderCellsTop","bSortCellsTop");w(a,"order","aaSorting");w(a,"orderFixed","aaSortingFixed");w(a,"paging","bPaginate");
w(a,"pagingType","sPaginationType");w(a,"pageLength","iDisplayLength");w(a,"searching","bFilter")}function db(a){w(a,"orderable","bSortable");w(a,"orderData","aDataSort");w(a,"orderSequence","asSorting");w(a,"orderDataType","sortDataType")}function eb(a){var a=a.oBrowser,b=g("<div/>").css({position:"absolute",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(g("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(g('<div class="test"/>').css({width:"100%",height:10}))).appendTo("body"),
c=b.find(".test");a.bScrollOversize=100===c[0].offsetWidth;a.bScrollbarLeft=1!==c.offset().left;b.remove()}function fb(a,b,c,d,e,f){var h,i=!1;c!==l&&(h=c,i=!0);for(;d!==e;)a.hasOwnProperty(d)&&(h=i?b(h,a[d],d,a):a[d],i=!0,d+=f);return h}function Aa(a,b){var c=p.defaults.column,d=a.aoColumns.length,c=g.extend({},p.models.oColumn,c,{nTh:b?b:N.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;
c[d]=g.extend({},p.models.oSearch,c[d]);fa(a,d,null)}function fa(a,b,c){var d=a.aoColumns[b],b=a.oClasses,e=g(d.nTh);if(!d.sWidthOrig){d.sWidthOrig=e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%])/);f&&(d.sWidthOrig=f[1])}c!==l&&null!==c&&(db(c),G(p.defaults.column,c),c.mDataProp!==l&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(d._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),g.extend(d,c),D(d,c,"sWidth","sWidthOrig"),"number"===typeof c.iDataSort&&
(d.aDataSort=[c.iDataSort]),D(d,c,"aDataSort"));var c=d.mData,h=T(c),i=d.mRender?T(d.mRender):null,f=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};d._bAttrSrc=g.isPlainObject(c)&&(f(c.sort)||f(c.type)||f(c.filter));d.fnGetData=function(a,b){var c=h(a,b);return d.mRender&&b&&""!==b?i(c,b,a):c};d.fnSetData=Ba(c);a.oFeatures.bSort||(d.bSortable=!1,e.addClass(b.sSortableNone));a=-1!==g.inArray("asc",d.asSorting);e=-1!==g.inArray("desc",d.asSorting);!d.bSortable||!a&&!e?(d.sSortingClass=
b.sSortableNone,d.sSortingClassJUI=""):a&&!e?(d.sSortingClass=b.sSortableAsc,d.sSortingClassJUI=b.sSortJUIAscAllowed):!a&&e?(d.sSortingClass=b.sSortableDesc,d.sSortingClassJUI=b.sSortJUIDescAllowed):(d.sSortingClass=b.sSortable,d.sSortingClassJUI=b.sSortJUI)}function U(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ca(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&V(a);t(a,null,"column-sizing",[a])}function ga(a,b){var c=W(a,"bVisible");
return"number"===typeof c[b]?c[b]:null}function X(a,b){var c=W(a,"bVisible"),c=g.inArray(b,c);return-1!==c?c:null}function Y(a){return W(a,"bVisible").length}function W(a,b){var c=[];g.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Da(a){var b=a.aoColumns,c=a.aoData,d=p.ext.type.detect,e,f,h,i,j,g,m,o,k;e=0;for(f=b.length;e<f;e++)if(m=b[e],k=[],!m.sType&&m._sManualType)m.sType=m._sManualType;else if(!m.sType){h=0;for(i=d.length;h<i;h++){j=0;for(g=c.length;j<g&&!(k[j]===l&&(k[j]=
A(a,j,e,"type")),o=d[h](k[j],a),!o||"html"===o);j++);if(o){m.sType=o;break}}m.sType||(m.sType="string")}}function gb(a,b,c,d){var e,f,h,i,j,n,m=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){n=b[e];var o=n.targets!==l?n.targets:n.aTargets;g.isArray(o)||(o=[o]);f=0;for(h=o.length;f<h;f++)if("number"===typeof o[f]&&0<=o[f]){for(;m.length<=o[f];)Aa(a);d(o[f],n)}else if("number"===typeof o[f]&&0>o[f])d(m.length+o[f],n);else if("string"===typeof o[f]){i=0;for(j=m.length;i<j;i++)("_all"==o[f]||g(m[i].nTh).hasClass(o[f]))&&
d(i,n)}}if(c){e=0;for(a=c.length;e<a;e++)d(e,c[e])}}function H(a,b,c,d){var e=a.aoData.length,f=g.extend(!0,{},p.models.oRow,{src:c?"dom":"data"});f._aData=b;a.aoData.push(f);for(var b=a.aoColumns,f=0,h=b.length;f<h;f++)c&&Ea(a,e,f,A(a,e,f)),b[f].sType=null;a.aiDisplayMaster.push(e);a.oFeatures.bDeferRender||Fa(a,e,c,d);return e}function ha(a,b){var c;b instanceof g||(b=g(b));return b.map(function(b,e){c=ia(a,e);return H(a,c.data,e,c.cells)})}function A(a,b,c,d){var c=a.aoColumns[c],e=a.aoData[b]._aData,
f=c.fnGetData(e,d);if(f===l)return a.iDrawError!=a.iDraw&&null===c.sDefaultContent&&(O(a,0,"Requested unknown parameter "+("function"==typeof c.mData?"{function}":"'"+c.mData+"'")+" for row "+b,4),a.iDrawError=a.iDraw),c.sDefaultContent;if((f===e||null===f)&&null!==c.sDefaultContent)f=c.sDefaultContent;else if("function"===typeof f)return f();return null===f&&"display"==d?"":f}function Ea(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d)}function Ga(a){return g.map(a.match(/(\\.|[^\.])+/g),
function(a){return a.replace("\\.",".")})}function T(a){if(g.isPlainObject(a)){var b={};g.each(a,function(a,c){c&&(b[a]=T(c))});return function(a,c,f){var h=b[c]||b._;return h!==l?h(a,c,f):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f){return a(b,c,f)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var h,i;if(""!==f){i=Ga(f);for(var j=0,g=i.length;j<g;j++){f=i[j].match(Z);h=i[j].match(P);if(f){i[j]=
i[j].replace(Z,"");""!==i[j]&&(a=a[i[j]]);h=[];i.splice(0,j+1);i=i.join(".");j=0;for(g=a.length;j<g;j++)h.push(c(a[j],b,i));a=f[0].substring(1,f[0].length-1);a=""===a?h:h.join(a);break}else if(h){i[j]=i[j].replace(P,"");a=a[i[j]]();continue}if(null===a||a[i[j]]===l)return l;a=a[i[j]]}}return a};return function(b,e){return c(b,e,a)}}return function(b){return b[a]}}function Ba(a){if(g.isPlainObject(a))return Ba(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,d){a(b,"set",
d)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,d,e){var e=Ga(e),f;f=e[e.length-1];for(var h,i,j=0,g=e.length-1;j<g;j++){h=e[j].match(Z);i=e[j].match(P);if(h){e[j]=e[j].replace(Z,"");a[e[j]]=[];f=e.slice();f.splice(0,j+1);h=f.join(".");i=0;for(g=d.length;i<g;i++)f={},b(f,d[i],h),a[e[j]].push(f);return}i&&(e[j]=e[j].replace(P,""),a=a[e[j]](d));if(null===a[e[j]]||a[e[j]]===l)a[e[j]]={};a=a[e[j]]}if(f.match(P))a[f.replace(P,"")](d);else a[f.replace(Z,
"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Ha(a){return B(a.aoData,"_aData")}function ja(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0}function ka(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===l&&a.splice(d,1)}function la(a,b,c,d){var e=a.aoData[b],f;if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=ia(a,e).data;else{var h=e.anCells;if(h){c=0;for(f=h.length;c<f;c++)h[c].innerHTML=A(a,b,c,"display")}}e._aSortData=
null;e._aFilterData=null;a=a.aoColumns;if(d!==l)a[d].sType=null;else{c=0;for(f=a.length;c<f;c++)a[c].sType=null}Ia(e)}function ia(a,b){var c=[],d=[],e=b.firstChild,f,h,i,j=0,n,m=a.aoColumns,o=function(a,b,c){"string"===typeof a&&(b=a.indexOf("@"),-1!==b&&(a=a.substring(b+1),i["@"+a]=c.getAttribute(a)))},k=function(a){h=m[j];n=g.trim(a.innerHTML);h&&h._bAttrSrc?(i={display:n},o(h.mData.sort,i,a),o(h.mData.type,i,a),o(h.mData.filter,i,a),c.push(i)):c.push(n);d.push(a);j++};if(e)for(;e;)f=e.nodeName.toUpperCase(),
("TD"==f||"TH"==f)&&k(e),e=e.nextSibling;else{d=b.anCells;e=0;for(f=d.length;e<f;e++)k(d[e])}return{data:c,cells:d}}function Fa(a,b,c,d){var e=a.aoData[b],f=e._aData,h=[],i,j,g,m,o;if(null===e.nTr){i=c||N.createElement("tr");e.nTr=i;e.anCells=h;i._DT_RowIndex=b;Ia(e);m=0;for(o=a.aoColumns.length;m<o;m++){g=a.aoColumns[m];j=c?d[m]:N.createElement(g.sCellType);h.push(j);if(!c||g.mRender||g.mData!==m)j.innerHTML=A(a,b,m,"display");g.sClass&&(j.className+=" "+g.sClass);g.bVisible&&!c?i.appendChild(j):
!g.bVisible&&c&&j.parentNode.removeChild(j);g.fnCreatedCell&&g.fnCreatedCell.call(a.oInstance,j,A(a,b,m,"display"),f,b,m)}t(a,"aoRowCreatedCallback",null,[i,f,b])}e.nTr.setAttribute("role","row")}function Ia(a){var b=a.nTr,c=a._aData;if(b){c.DT_RowId&&(b.id=c.DT_RowId);if(c.DT_RowClass){var d=c.DT_RowClass.split(" ");a.__rowc=a.__rowc?Ja(a.__rowc.concat(d)):d;g(b).removeClass(a.__rowc.join(" ")).addClass(c.DT_RowClass)}c.DT_RowData&&g(b).data(c.DT_RowData)}}function hb(a){var b,c,d,e,f,h=a.nTHead,
i=a.nTFoot,j=0===g("th, td",h).length,n=a.oClasses,m=a.aoColumns;j&&(e=g("<tr/>").appendTo(h));b=0;for(c=m.length;b<c;b++)f=m[b],d=g(f.nTh).addClass(f.sClass),j&&d.appendTo(e),a.oFeatures.bSort&&(d.addClass(f.sSortingClass),!1!==f.bSortable&&(d.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Ka(a,f.nTh,b))),f.sTitle!=d.html()&&d.html(f.sTitle),La(a,"header")(a,d,f,n);j&&$(a.aoHeader,h);g(h).find(">tr").attr("role","row");g(h).find(">tr>th, >tr>td").addClass(n.sHeaderTH);g(i).find(">tr>th, >tr>td").addClass(n.sFooterTH);
if(null!==i){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=m[b],f.nTf=a[b].cell,f.sClass&&g(f.nTf).addClass(f.sClass)}}function I(a,b,c){var d,e,f,h=[],i=[],j=a.aoColumns.length,n;if(b){c===l&&(c=!1);d=0;for(e=b.length;d<e;d++){h[d]=b[d].slice();h[d].nTr=b[d].nTr;for(f=j-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&h[d].splice(f,1);i.push([])}d=0;for(e=h.length;d<e;d++){if(a=h[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=h[d].length;f<b;f++)if(n=j=1,i[d][f]===l){a.appendChild(h[d][f].cell);for(i[d][f]=
1;h[d+j]!==l&&h[d][f].cell==h[d+j][f].cell;)i[d+j][f]=1,j++;for(;h[d][f+n]!==l&&h[d][f].cell==h[d][f+n].cell;){for(c=0;c<j;c++)i[d+c][f+n]=1;n++}g(h[d][f].cell).attr("rowspan",j).attr("colspan",n)}}}}function J(a){var b=t(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==g.inArray(!1,b))C(a,!1);else{var b=[],c=0,d=a.asStripeClasses,e=d.length,f=a.oLanguage,h=a.iInitDisplayStart,i="ssp"==z(a),j=a.aiDisplay;a.bDrawing=!0;h!==l&&-1!==h&&(a._iDisplayStart=i?h:h>=a.fnRecordsDisplay()?0:h,a.iInitDisplayStart=
-1);var h=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(i){if(!a.bDestroying&&!ib(a))return}else a.iDraw++;if(0!==j.length){f=i?a.aoData.length:n;for(i=i?0:h;i<f;i++){var m=j[i],o=a.aoData[m];null===o.nTr&&Fa(a,m);m=o.nTr;if(0!==e){var k=d[c%e];o._sRowStripe!=k&&(g(m).removeClass(o._sRowStripe).addClass(k),o._sRowStripe=k)}t(a,"aoRowCallback",null,[m,o._aData,c,i]);b.push(m);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==z(a)?c=f.sLoadingRecords:
f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=g("<tr/>",{"class":e?d[0]:""}).append(g("<td />",{valign:"top",colSpan:Y(a),"class":a.oClasses.sRowEmpty}).html(c))[0];t(a,"aoHeaderCallback","header",[g(a.nTHead).children("tr")[0],Ha(a),h,n,j]);t(a,"aoFooterCallback","footer",[g(a.nTFoot).children("tr")[0],Ha(a),h,n,j]);d=g(a.nTBody);d.children().detach();d.append(g(b));t(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function K(a,b){var c=a.oFeatures,d=c.bFilter;
c.bSort&&jb(a);d?aa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);J(a)}function kb(a){var b=a.oClasses,c=g(a.nTable),c=g("<div/>").insertBefore(c),d=a.oFeatures,e=g("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),h,i,j,n,m,o,k=0;k<f.length;k++){h=null;i=f[k];if("<"==i){j=g("<div/>")[0];n=f[k+1];if("'"==n||'"'==n){m=
"";for(o=2;f[k+o]!=n;)m+=f[k+o],o++;"H"==m?m=b.sJUIHeader:"F"==m&&(m=b.sJUIFooter);-1!=m.indexOf(".")?(n=m.split("."),j.id=n[0].substr(1,n[0].length-1),j.className=n[1]):"#"==m.charAt(0)?j.id=m.substr(1,m.length-1):j.className=m;k+=o}e.append(j);e=g(j)}else if(">"==i)e=e.parent();else if("l"==i&&d.bPaginate&&d.bLengthChange)h=lb(a);else if("f"==i&&d.bFilter)h=mb(a);else if("r"==i&&d.bProcessing)h=nb(a);else if("t"==i)h=ob(a);else if("i"==i&&d.bInfo)h=pb(a);else if("p"==i&&d.bPaginate)h=qb(a);else if(0!==
p.ext.feature.length){j=p.ext.feature;o=0;for(n=j.length;o<n;o++)if(i==j[o].cFeature){h=j[o].fnInit(a);break}}h&&(j=a.aanFeatures,j[i]||(j[i]=[]),j[i].push(h),e.append(h))}c.replaceWith(e)}function $(a,b){var c=g(b).children("tr"),d,e,f,h,i,j,n,m,o,k;a.splice(0,a.length);f=0;for(j=c.length;f<j;f++)a.push([]);f=0;for(j=c.length;f<j;f++){d=c[f];for(e=d.firstChild;e;){if("TD"==e.nodeName.toUpperCase()||"TH"==e.nodeName.toUpperCase()){m=1*e.getAttribute("colspan");o=1*e.getAttribute("rowspan");m=!m||
0===m||1===m?1:m;o=!o||0===o||1===o?1:o;h=0;for(i=a[f];i[h];)h++;n=h;k=1===m?!0:!1;for(i=0;i<m;i++)for(h=0;h<o;h++)a[f+h][n+i]={cell:e,unique:k},a[f+h].nTr=d}e=e.nextSibling}}}function ma(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],$(c,b)));for(var b=0,e=c.length;b<e;b++)for(var f=0,h=c[b].length;f<h;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function na(a,b,c){t(a,"aoServerParams","serverParams",[b]);if(b&&g.isArray(b)){var d={},e=/(.*?)\[\]$/;g.each(b,function(a,b){var c=
b.name.match(e);c?(c=c[0],d[c]||(d[c]=[]),d[c].push(b.value)):d[b.name]=b.value});b=d}var f,h=a.ajax,i=a.oInstance;if(g.isPlainObject(h)&&h.data){f=h.data;var j=g.isFunction(f)?f(b):f,b=g.isFunction(f)&&j?j:g.extend(!0,b,j);delete h.data}j={data:b,success:function(b){var d=b.error||b.sError;d&&a.oApi._fnLog(a,0,d);a.json=b;t(a,null,"xhr",[a,b]);c(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var d=a.oApi._fnLog;"parsererror"==c?d(a,0,"Invalid JSON response",1):4===b.readyState&&
d(a,0,"Ajax error",7);C(a,!1)}};a.oAjaxData=b;t(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(i,a.sAjaxSource,g.map(b,function(a,b){return{name:b,value:a}}),c,a):a.sAjaxSource||"string"===typeof h?a.jqXHR=g.ajax(g.extend(j,{url:h||a.sAjaxSource})):g.isFunction(h)?a.jqXHR=h.call(i,b,c,a):(a.jqXHR=g.ajax(g.extend(j,h)),h.data=f)}function ib(a){if(a.bAjaxDataGet){a.iDraw++;C(a,!0);var b=rb(a);na(a,b,function(b){sb(a,b)},a);return!1}return!0}function rb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,
e=a.oPreviousSearch,f=a.aoPreSearchCols,h,i=[],j,n,m,o=Q(a);h=a._iDisplayStart;j=!1!==d.bPaginate?a._iDisplayLength:-1;var k=function(a,b){i.push({name:a,value:b})};k("sEcho",a.iDraw);k("iColumns",c);k("sColumns",B(b,"sName").join(","));k("iDisplayStart",h);k("iDisplayLength",j);var l={draw:a.iDraw,columns:[],order:[],start:h,length:j,search:{value:e.sSearch,regex:e.bRegex}};for(h=0;h<c;h++)n=b[h],m=f[h],j="function"==typeof n.mData?"function":n.mData,l.columns.push({data:j,name:n.sName,searchable:n.bSearchable,
orderable:n.bSortable,search:{value:m.sSearch,regex:m.bRegex}}),k("mDataProp_"+h,j),d.bFilter&&(k("sSearch_"+h,m.sSearch),k("bRegex_"+h,m.bRegex),k("bSearchable_"+h,n.bSearchable)),d.bSort&&k("bSortable_"+h,n.bSortable);d.bFilter&&(k("sSearch",e.sSearch),k("bRegex",e.bRegex));d.bSort&&(g.each(o,function(a,b){l.order.push({column:b.col,dir:b.dir});k("iSortCol_"+a,b.col);k("sSortDir_"+a,b.dir)}),k("iSortingCols",o.length));b=p.ext.legacy.ajax;return null===b?a.sAjaxSource?i:l:b?i:l}function sb(a,b){var c=
b.sEcho!==l?b.sEcho:b.draw,d=b.iTotalRecords!==l?b.iTotalRecords:b.recordsTotal,e=b.iTotalDisplayRecords!==l?b.iTotalDisplayRecords:b.recordsFiltered;if(c){if(1*c<a.iDraw)return;a.iDraw=1*c}ja(a);a._iRecordsTotal=parseInt(d,10);a._iRecordsDisplay=parseInt(e,10);c=oa(a,b);d=0;for(e=c.length;d<e;d++)H(a,c[d]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;J(a);a._bInitComplete||pa(a,b);a.bAjaxDataGet=!0;C(a,!1)}function oa(a,b){var c=g.isPlainObject(a.ajax)&&a.ajax.dataSrc!==l?a.ajax.dataSrc:
a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?T(c)(b):b}function mb(a){var b=a.oClasses,c=a.sTableId,d=a.oPreviousSearch,e=a.aanFeatures,f='<input type="search" class="input-text '+b.sFilterInput+'"/>',h=a.oLanguage.sSearch,h=h.match(/_INPUT_/)?h.replace("_INPUT_",f):h+f,b=g("<div/>",{id:!e.f?c+"_filter":null,"class":b.sFilter}).append(g("<label/>").append(h)),e=function(){var b=!this.value?"":this.value;b!=d.sSearch&&(aa(a,{sSearch:b,bRegex:d.bRegex,bSmart:d.bSmart,bCaseInsensitive:d.bCaseInsensitive}),
a._iDisplayStart=0,J(a))},i=g("input",b).val(d.sSearch.replace('"',"&quot;")).bind("keyup.DT search.DT input.DT paste.DT cut.DT","ssp"===z(a)?Ma(e,400):e).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);g(a.nTable).on("filter.DT",function(){try{i[0]!==N.activeElement&&i.val(d.sSearch)}catch(a){}});return b[0]}function aa(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};
Da(a);if("ssp"!=z(a)){tb(a,b.sSearch,c,b.bEscapeRegex!==l?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)ub(a,e[b].sSearch,b,e[b].bEscapeRegex!==l?!e[b].bEscapeRegex:e[b].bRegex,e[b].bSmart,e[b].bCaseInsensitive);vb(a)}else f(b);a.bFiltered=!0;t(a,null,"search",[a])}function vb(a){for(var b=p.ext.search,c=a.aiDisplay,d,e,f=0,h=b.length;f<h;f++)for(var i=c.length-1;0<=i;i--)e=c[i],d=a.aoData[e],b[f](a,d._aFilterData,e,d._aData)||c.splice(i,1)}function ub(a,b,c,d,
e,f){if(""!==b)for(var h=a.aiDisplay,d=Na(b,d,e,f),e=h.length-1;0<=e;e--)b=a.aoData[h[e]]._aFilterData[c],d.test(b)||h.splice(e,1)}function tb(a,b,c,d,e,f){var d=Na(b,d,e,f),e=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,h;0!==p.ext.search.length&&(c=!0);h=wb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(h||c||e.length>b.length||0!==b.indexOf(e)||a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)d.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Na(a,b,c,d){a=b?a:
Oa(a);c&&(a="^(?=.*?"+g.map(a.match(/"[^"]+"|[^ ]+/g)||"",function(a){return'"'===a.charAt(0)?a.match(/^"(.*)"$/)[1]:a}).join(")(?=.*?")+").*$");return RegExp(a,d?"i":"")}function Oa(a){return a.replace(Sb,"\\$1")}function wb(a){var b=a.aoColumns,c,d,e,f,h,i,j,g,m=p.ext.type.search;c=!1;d=0;for(f=a.aoData.length;d<f;d++)if(g=a.aoData[d],!g._aFilterData){i=[];e=0;for(h=b.length;e<h;e++)c=b[e],c.bSearchable?(j=A(a,d,e,"filter"),j=m[c.sType]?m[c.sType](j):null!==j?j:""):j="",j.indexOf&&-1!==j.indexOf("&")&&
(qa.innerHTML=j,j=Tb?qa.textContent:qa.innerText),j.replace&&(j=j.replace(/[\r\n]/g,"")),i.push(j);g._aFilterData=i;g._sFilterRow=i.join(" ");c=!0}return c}function pb(a){var b=a.sTableId,c=a.aanFeatures.i,d=g("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:xb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),g(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function xb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,
d=a._iDisplayStart+1,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),h=a.fnRecordsDisplay(),i=h?c.sInfo:c.sInfoEmpty;h!==f&&(i+=" "+c.sInfoFiltered);i+=c.sInfoPostFix;i=yb(a,i);c=c.fnInfoCallback;null!==c&&(i=c.call(a.oInstance,a,d,e,f,h,i));g(b).html(i)}}function yb(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),h=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,
c.call(a,f)).replace(/_PAGE_/g,c.call(a,h?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,h?1:Math.ceil(f/e)))}function ra(a){var b,c,d=a.iInitDisplayStart,e=a.aoColumns,f;c=a.oFeatures;if(a.bInitialised){kb(a);hb(a);I(a,a.aoHeader);I(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ca(a);b=0;for(c=e.length;b<c;b++)f=e[b],f.sWidth&&(f.nTh.style.width=s(f.sWidth));K(a);e=z(a);"ssp"!=e&&("ajax"==e?na(a,[],function(c){var f=oa(a,c);for(b=0;b<f.length;b++)H(a,f[b]);a.iInitDisplayStart=d;K(a);C(a,!1);pa(a,c)},a):(C(a,
!1),pa(a)))}else setTimeout(function(){ra(a)},200)}function pa(a,b){a._bInitComplete=!0;b&&U(a);t(a,"aoInitComplete","init",[a,b])}function Pa(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Qa(a);t(a,null,"length",[a,c])}function lb(a){for(var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=g.isArray(d[0]),f=e?d[0]:d,e=e?d[1]:d,d=g("<select/>",{name:c+"_length","aria-controls":c,"class":"select" +b.sLengthSelect}),h=0,i=f.length;h<i;h++)d[0][h]=new Option(e[h],f[h]);var j=g("<div><label/></div>").addClass(b.sLength);
a.aanFeatures.l||(j[0].id=c+"_length");b=a.oLanguage.sLengthMenu.split(/(_MENU_)/);j.children().append(1<b.length?[b[0],d,b[2]]:b[0]);g("select",j).val(a._iDisplayLength).bind("change.DT",function(){Pa(a,g(this).val());J(a)});g(a.nTable).bind("length.dt.DT",function(a,b,c){g("select",j).val(c)});return j[0]}function qb(a){var b=a.sPaginationType,c=p.ext.pager[b],d="function"===typeof c,e=function(a){J(a)},b=g("<div/>").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=
a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,j=a._iDisplayLength,g=a.fnRecordsDisplay(),m=-1===j,b=m?0:Math.ceil(b/j),j=m?1:Math.ceil(g/j),g=c(b,j),o,m=0;for(o=f.p.length;m<o;m++)La(a,"pageButton")(a,f.p[m],m,g,b,j)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Ra(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===e?d=0:"number"===typeof b?(d=b*e,d>f&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>
d&&(d=0)):"next"==b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:O(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(t(a,null,"page",[a]),c&&J(a));return b}function nb(a){return g("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&g(a.aanFeatures.r).css("display",b?"block":"none");t(a,null,"processing",[a,b])}function ob(a){var b=
g(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,h=b.children("caption"),i=h.length?h[0]._captionSide:null,j=g(b[0].cloneNode(!1)),n=g(b[0].cloneNode(!1)),m=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");m.length||(m=null);c=g("<div/>",{"class":f.sScrollWrapper}).append(g("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:s(d):"100%"}).append(g("<div/>",
{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(j.removeAttr("id").css("margin-left",0).append(b.children("thead")))).append("top"===i?h:null)).append(g("<div/>",{"class":f.sScrollBody}).css({overflow:"auto",height:!e?null:s(e),width:!d?null:s(d)}).append(b));m&&c.append(g("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:s(d):"100%"}).append(g("<div/>",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",
0).append(b.children("tfoot")))).append("bottom"===i?h:null));var b=c.children(),o=b[0],f=b[1],k=m?b[2]:null;d&&g(f).scroll(function(){var a=this.scrollLeft;o.scrollLeft=a;m&&(k.scrollLeft=a)});a.nScrollHead=o;a.nScrollBody=f;a.nScrollFoot=k;a.aoDrawCallback.push({fn:V,sName:"scrolling"});return c[0]}function V(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,f=b.iBarWidth,h=g(a.nScrollHead),i=h[0].style,j=h.children("div"),n=j[0].style,m=j.children("table"),j=a.nScrollBody,o=g(j),k=j.style,l=g(a.nScrollFoot).children("div"),
p=l.children("table"),r=g(a.nTHead),q=g(a.nTable),ba=q[0],L=ba.style,t=a.nTFoot?g(a.nTFoot):null,ca=a.oBrowser,v=ca.bScrollOversize,x,u,y,w,z,A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};q.children("thead, tfoot").remove();z=r.clone().prependTo(q);x=r.find("tr");y=z.find("tr");z.find("th, td").removeAttr("tabindex");t&&(w=t.clone().prependTo(q),u=t.find("tr"),w=w.find("tr"));c||(k.width="100%",h[0].style.width=
"100%");g.each(ma(a,z),function(b,c){D=ga(a,b);c.style.width=a.aoColumns[D].sWidth});t&&F(function(a){a.style.width=""},w);b.bCollapse&&""!==e&&(k.height=o[0].offsetHeight+r[0].offsetHeight+"px");h=q.outerWidth();if(""===c){if(L.width="100%",v&&(q.find("tbody").height()>j.offsetHeight||"scroll"==o.css("overflow-y")))L.width=s(q.outerWidth()-f)}else""!==d?L.width=s(d):h==o.width()&&o.height()<q.height()?(L.width=s(h-f),q.outerWidth()>h-f&&(L.width=s(h))):L.width=s(h);h=q.outerWidth();F(E,y);F(function(a){C.push(a.innerHTML);
A.push(s(g(a).css("width")))},y);F(function(a,b){a.style.width=A[b]},x);g(y).height(0);t&&(F(E,w),F(function(a){B.push(s(g(a).css("width")))},w),F(function(a,b){a.style.width=B[b]},u),g(w).height(0));F(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+C[b]+"</div>";a.style.width=A[b]},y);t&&F(function(a,b){a.innerHTML="";a.style.width=B[b]},w);if(q.outerWidth()<h){u=j.scrollHeight>j.offsetHeight||"scroll"==o.css("overflow-y")?h+f:h;if(v&&(j.scrollHeight>
j.offsetHeight||"scroll"==o.css("overflow-y")))L.width=s(u-f);(""===c||""!==d)&&O(a,1,"Possible column misalignment",6)}else u="100%";k.width=s(u);i.width=s(u);t&&(a.nScrollFoot.style.width=s(u));!e&&v&&(k.height=s(ba.offsetHeight+f));e&&b.bCollapse&&(k.height=s(e),b=c&&ba.offsetWidth>j.offsetWidth?f:0,ba.offsetHeight<j.offsetHeight&&(k.height=s(ba.offsetHeight+b)));b=q.outerWidth();m[0].style.width=s(b);n.width=s(b);m=q.height()>j.clientHeight||"scroll"==o.css("overflow-y");ca="padding"+(ca.bScrollbarLeft?
"Left":"Right");n[ca]=m?f+"px":"0px";t&&(p[0].style.width=s(b),l[0].style.width=s(b),l[0].style[ca]=m?f+"px":"0px");o.scroll();if(a.bSorted||a.bFiltered)j.scrollTop=0}function F(a,b,c){for(var d=0,e=0,f=b.length,h,i;e<f;){h=b[e].firstChild;for(i=c?c[e].firstChild:null;h;)1===h.nodeType&&(c?a(h,i,d):a(h,d),d++),h=h.nextSibling,i=c?i.nextSibling:null;e++}}function Ca(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,f=d.sX,h=d.sXInner,i=c.length,d=W(a,"bVisible"),j=g("th",a.nTHead),n=b.getAttribute("width"),
m=b.parentNode,o=!1,k,l;for(k=0;k<d.length;k++)l=c[d[k]],null!==l.sWidth&&(l.sWidth=zb(l.sWidthOrig,m),o=!0);if(!o&&!f&&!e&&i==Y(a)&&i==j.length)for(k=0;k<i;k++)c[k].sWidth=s(j.eq(k).width());else{i=g(b.cloneNode(!1)).css("visibility","hidden").removeAttr("id").append(g(a.nTHead).clone(!1)).append(g(a.nTFoot).clone(!1)).append(g("<tbody><tr/></tbody>"));i.find("tfoot th, tfoot td").css("width","");var p=i.find("tbody tr"),j=ma(a,i.find("thead")[0]);for(k=0;k<d.length;k++)l=c[d[k]],j[k].style.width=
null!==l.sWidthOrig&&""!==l.sWidthOrig?s(l.sWidthOrig):"";if(a.aoData.length)for(k=0;k<d.length;k++)o=d[k],l=c[o],g(Ab(a,o)).clone(!1).append(l.sContentPadding).appendTo(p);i.appendTo(m);f&&h?i.width(h):f?(i.css("width","auto"),i.width()<m.offsetWidth&&i.width(m.offsetWidth)):e?i.width(m.offsetWidth):n&&i.width(n);Bb(a,i[0]);if(f){for(k=h=0;k<d.length;k++)l=c[d[k]],e=g(j[k]).outerWidth(),h+=null===l.sWidthOrig?e:parseInt(l.sWidth,10)+e-g(j[k]).width();i.width(s(h));b.style.width=s(h)}for(k=0;k<d.length;k++)if(l=
c[d[k]],e=g(j[k]).width())l.sWidth=s(e);b.style.width=s(i.css("width"));i.remove()}n&&(b.style.width=s(n));if((n||f)&&!a._reszEvt)g(za).bind("resize.DT-"+a.sInstance,Ma(function(){U(a)})),a._reszEvt=!0}function Ma(a,b){var c=b||200,d,e;return function(){var b=this,h=+new Date,i=arguments;d&&h<d+c?(clearTimeout(e),e=setTimeout(function(){d=l;a.apply(b,i)},c)):d?(d=h,a.apply(b,i)):d=h}}function zb(a,b){if(!a)return 0;var c=g("<div/>").css("width",s(a)).appendTo(b||N.body),d=c[0].offsetWidth;c.remove();
return d}function Bb(a,b){var c=a.oScroll;if(c.sX||c.sY)c=!c.sX?c.iBarWidth:0,b.style.width=s(g(b).outerWidth()-c)}function Ab(a,b){var c=Cb(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?g("<td/>").html(A(a,c,b,"display"))[0]:d.anCells[b]}function Cb(a,b){for(var c,d=-1,e=-1,f=0,h=a.aoData.length;f<h;f++)c=A(a,f,b,"display")+"",c=c.replace(Ub,""),c.length>d&&(d=c.length,e=f);return e}function s(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Db(){if(!p.__scrollbarWidth){var a=
g("<p/>").css({width:"100%",height:200,padding:0})[0],b=g("<div/>").css({position:"absolute",top:0,left:0,width:200,height:150,padding:0,overflow:"hidden",visibility:"hidden"}).append(a).appendTo("body"),c=a.offsetWidth;b.css("overflow","scroll");a=a.offsetWidth;c===a&&(a=b[0].clientWidth);b.remove();p.__scrollbarWidth=c-a}return p.__scrollbarWidth}function Q(a){var b,c,d=[],e=a.aoColumns,f,h,i,j;b=a.aaSortingFixed;c=g.isPlainObject(b);var n=[];f=function(a){a.length&&!g.isArray(a[0])?n.push(a):n.push.apply(n,
a)};g.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<n.length;a++){j=n[a][0];f=e[j].aDataSort;b=0;for(c=f.length;b<c;b++)h=f[b],i=e[h].sType||"string",d.push({src:j,col:h,dir:n[a][1],index:n[a][2],type:i,formatter:p.ext.type.order[i+"-pre"]})}return d}function jb(a){var b,c,d=[],e=p.ext.type.order,f=a.aoData,h=0,i,g=a.aiDisplayMaster,n;Da(a);n=Q(a);b=0;for(c=n.length;b<c;b++)i=n[b],i.formatter&&h++,Eb(a,i.col);if("ssp"!=z(a)&&0!==n.length){b=0;for(c=g.length;b<c;b++)d[g[b]]=
b;h===n.length?g.sort(function(a,b){var c,e,h,g,i=n.length,j=f[a]._aSortData,l=f[b]._aSortData;for(h=0;h<i;h++)if(g=n[h],c=j[g.col],e=l[g.col],c=c<e?-1:c>e?1:0,0!==c)return"asc"===g.dir?c:-c;c=d[a];e=d[b];return c<e?-1:c>e?1:0}):g.sort(function(a,b){var c,h,g,i,j=n.length,l=f[a]._aSortData,p=f[b]._aSortData;for(g=0;g<j;g++)if(i=n[g],c=l[i.col],h=p[i.col],i=e[i.type+"-"+i.dir]||e["string-"+i.dir],c=i(c,h),0!==c)return c;c=d[a];h=d[b];return c<h?-1:c>h?1:0})}a.bSorted=!0}function Fb(a){for(var b,c,
d=a.aoColumns,e=Q(a),a=a.oLanguage.oAria,f=0,h=d.length;f<h;f++){c=d[f];var i=c.asSorting;b=c.sTitle.replace(/<.*?>/g,"");var g=c.nTh;g.removeAttribute("aria-sort");c.bSortable&&(0<e.length&&e[0].col==f?(g.setAttribute("aria-sort","asc"==e[0].dir?"ascending":"descending"),c=i[e[0].index+1]||i[0]):c=i[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);g.setAttribute("aria-label",b)}}function Sa(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,h=function(a){var b=a._idx;b===l&&(b=g.inArray(a[1],
f));return b+1>=f.length?0:b+1};c&&a.oFeatures.bSortMulti?(c=g.inArray(b,B(e,"0")),-1!==c?(b=h(e[c]),e[c][1]=f[b],e[c]._idx=b):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=h(e[0]),e.length=1,e[0][1]=f[b],e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);K(a);"function"==typeof d&&d(a)}function Ka(a,b,c,d){var e=a.aoColumns[c];Ta(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Sa(a,c,b.shiftKey,d);"ssp"!==z(a)&&C(a,!1)},0)):Sa(a,
c,b.shiftKey,d))})}function sa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=Q(a),e=a.oFeatures,f,h;if(e.bSort&&e.bSortClasses){e=0;for(f=b.length;e<f;e++)h=b[e].src,g(B(a.aoData,"anCells",h)).removeClass(c+(2>e?e+1:3));e=0;for(f=d.length;e<f;e++)h=d[e].src,g(B(a.aoData,"anCells",h)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Eb(a,b){var c=a.aoColumns[b],d=p.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,X(a,b)));for(var f,h=p.ext.type.order[c.sType+"-pre"],g=0,j=a.aoData.length;g<
j;g++)if(c=a.aoData[g],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[g]:A(a,g,b,"sort"),c._aSortData[b]=h?h(f):f}function ta(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={iCreate:+new Date,iStart:a._iDisplayStart,iLength:a._iDisplayLength,aaSorting:g.extend(!0,[],a.aaSorting),oSearch:g.extend(!0,{},a.oPreviousSearch),aoSearchCols:g.extend(!0,[],a.aoPreSearchCols),abVisCols:B(a.aoColumns,"bVisible")};t(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.fnStateSaveCallback.call(a.oInstance,
a,b)}}function Gb(a){var b,c,d=a.aoColumns;if(a.oFeatures.bStateSave){var e=a.fnStateLoadCallback.call(a.oInstance,a);if(e&&(b=t(a,"aoStateLoadParams","stateLoadParams",[a,e]),-1===g.inArray(!1,b)&&(b=a.iStateDuration,!(0<b&&e.iCreate<+new Date-1E3*b)&&d.length===e.aoSearchCols.length))){a.oLoadedState=g.extend(!0,{},e);a._iDisplayStart=e.iStart;a.iInitDisplayStart=e.iStart;a._iDisplayLength=e.iLength;a.aaSorting=g.map(e.aaSorting,function(a){return a[0]>=d.length?[0,a[1]]:a});g.extend(a.oPreviousSearch,
e.oSearch);g.extend(!0,a.aoPreSearchCols,e.aoSearchCols);var f=e.abVisCols;b=0;for(c=f.length;b<c;b++)d[b].bVisible=f[b];t(a,"aoStateLoaded","stateLoaded",[a,e])}}}function ua(a){var b=p.settings,a=g.inArray(a,B(b,"nTable"));return-1!==a?b[a]:null}function O(a,b,c,d){c="DataTables warning: "+(null!==a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)za.console&&console.log&&console.log(c);else if(a=p.ext,"alert"==(a.sErrMode||
a.errMode))alert(c);else throw Error(c);}function D(a,b,c,d){g.isArray(c)?g.each(c,function(c,d){g.isArray(d)?D(a,b,d[0],d[1]):D(a,b,d)}):(d===l&&(d=c),b[c]!==l&&(a[d]=b[c]))}function Hb(a,b,c){var d,e;for(e in b)b.hasOwnProperty(e)&&(d=b[e],g.isPlainObject(d)?(g.isPlainObject(a[e])||(a[e]={}),g.extend(!0,a[e],d)):a[e]=c&&"data"!==e&&"aaData"!==e&&g.isArray(d)?d.slice():d);return a}function Ta(a,b,c){g(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&
(a.preventDefault(),c(a))}).bind("selectstart.DT",function(){return!1})}function y(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function t(a,b,c,d){var e=[];b&&(e=g.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&g(a.nTable).trigger(c+".dt",d);return e}function Qa(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;c===a.fnRecordsDisplay()&&(b=c-d);if(-1===d||0>b)b=0;a._iDisplayStart=b}function La(a,b){var c=a.renderer,d=p.ext.renderer[b];return g.isPlainObject(c)&&
c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}function z(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Ua(a,b){var c=[],c=Ib.numbers_length,d=Math.floor(c/2);b<=c?c=R(0,b):a<=d?(c=R(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=R(b-(c-2),b):(c=R(a-1,a+2),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function bb(a){g.each({num:function(b){return va(b,a)},"num-fmt":function(b){return va(b,a,Va)},"html-num":function(b){return va(b,
a,wa)},"html-num-fmt":function(b){return va(b,a,wa,Va)}},function(b,c){u.type.order[b+a+"-pre"]=c})}function Jb(a){return function(){var b=[ua(this[p.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return p.ext.internal[a].apply(this,b)}}var p,u,q,r,x,Wa={},Kb=/[\r\n]/g,wa=/<.*?>/g,Vb=/^[\d\+\-a-zA-Z]/,Sb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Va=/[',$\u00a3\u20ac\u00a5%\u2009\u202F]/g,da=function(a){return!a||"-"===a?!0:!1},Lb=function(a){var b=
parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Mb=function(a,b){Wa[b]||(Wa[b]=RegExp(Oa(b),"g"));return"string"===typeof a?a.replace(/\./g,"").replace(Wa[b],"."):a},Xa=function(a,b,c){var d="string"===typeof a;b&&d&&(a=Mb(a,b));c&&d&&(a=a.replace(Va,""));return!a||"-"===a||!isNaN(parseFloat(a))&&isFinite(a)},Nb=function(a,b,c){return da(a)?!0:a&&"string"!==typeof a?null:Xa(a.replace(wa,""),b,c)?!0:null},B=function(a,b,c){var d=[],e=0,f=a.length;if(c!==l)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);
else for(;e<f;e++)a[e]&&d.push(a[e][b]);return d},xa=function(a,b,c,d){var e=[],f=0,h=b.length;if(d!==l)for(;f<h;f++)e.push(a[b[f]][c][d]);else for(;f<h;f++)e.push(a[b[f]][c]);return e},R=function(a,b){var c=[],d;b===l?(b=0,d=a):(d=b,b=a);for(var e=b;e<d;e++)c.push(e);return c},Ja=function(a){var b=[],c,d,e=a.length,f,h=0;d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<h;f++)if(b[f]===c)continue a;b.push(c);h++}return b},w=function(a,b,c){a[b]!==l&&(a[c]=a[b])},Z=/\[.*?\]$/,P=/\(\)$/,qa=g("<div>")[0],Tb=qa.textContent!==
l,Ub=/<.*?>/g;p=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new q(ua(this[u.iApiIndex])):new q(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=g.isArray(a)&&(g.isArray(a[0])||g.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===l||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===l||
a?b.draw(!1):(""!==d.sX||""!==d.sY)&&V(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===l||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],g=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,g);(c===l||c)&&d.draw();return g};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(!a)};this.fnFilter=function(a,b,c,d,e,g){e=this.api(!0);null===
b||b===l?e.search(a,c,d,g):e.column(b).search(a,c,d,g);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==l){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==l||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==l?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==
c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===l||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===l||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return ua(this[u.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};
this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var g=this.api(!0);c===l||null===c?g.row(b).data(a):g.cell(b,c).data(a);(e===l||e)&&g.columns.adjust();(d===l||d)&&g.draw();return 0};this.fnVersionCheck=u.fnVersionCheck;var b=this,c=a===l,d=this.length;c&&(a={});this.oApi=this.internal=u.internal;for(var e in p.ext.internal)e&&(this[e]=Jb(e));this.each(function(){var e={},h=1<d?Hb(e,a,!0):a,i=0,j,n=this.getAttribute("id"),e=!1,m=p.defaults;
if("table"!=this.nodeName.toLowerCase())O(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{cb(m);db(m.column);G(m,m,!0);G(m.column,m.column,!0);G(m,h);var o=p.settings,i=0;for(j=o.length;i<j;i++){if(o[i].nTable==this){j=h.bRetrieve!==l?h.bRetrieve:m.bRetrieve;if(c||j)return o[i].oInstance;if(h.bDestroy!==l?h.bDestroy:m.bDestroy){o[i].oInstance.fnDestroy();break}else{O(o[i],0,"Cannot reinitialise DataTable",3);return}}if(o[i].sTableId==this.id){o.splice(i,1);break}}if(null===n||""===
n)this.id=n="DataTables_Table_"+p.ext._unique++;var k=g.extend(!0,{},p.models.oSettings,{nTable:this,oApi:b.internal,oInit:h,sDestroyWidth:g(this)[0].style.width,sInstance:n,sTableId:n});o.push(k);k.oInstance=1===b.length?b:g(this).dataTable();cb(h);h.oLanguage&&M(h.oLanguage);h.aLengthMenu&&!h.iDisplayLength&&(h.iDisplayLength=g.isArray(h.aLengthMenu[0])?h.aLengthMenu[0][0]:h.aLengthMenu[0]);h=Hb(g.extend(!0,{},m),h);D(k.oFeatures,h,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));
D(k,h,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);D(k.oScroll,h,[["sScrollX","sX"],["sScrollXInner","sXInner"],
["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);D(k.oLanguage,h,"fnInfoCallback");y(k,"aoDrawCallback",h.fnDrawCallback,"user");y(k,"aoServerParams",h.fnServerParams,"user");y(k,"aoStateSaveParams",h.fnStateSaveParams,"user");y(k,"aoStateLoadParams",h.fnStateLoadParams,"user");y(k,"aoStateLoaded",h.fnStateLoaded,"user");y(k,"aoRowCallback",h.fnRowCallback,"user");y(k,"aoRowCreatedCallback",h.fnCreatedRow,"user");y(k,"aoHeaderCallback",h.fnHeaderCallback,"user");y(k,"aoFooterCallback",h.fnFooterCallback,
"user");y(k,"aoInitComplete",h.fnInitComplete,"user");y(k,"aoPreDrawCallback",h.fnPreDrawCallback,"user");n=k.oClasses;h.bJQueryUI?(g.extend(n,p.ext.oJUIClasses,h.oClasses),h.sDom===m.sDom&&"lfrtip"===m.sDom&&(k.sDom='<"H"lfr>t<"F"ip>'),k.renderer)?g.isPlainObject(k.renderer)&&!k.renderer.header&&(k.renderer.header="jqueryui"):k.renderer="jqueryui":g.extend(n,p.ext.classes,h.oClasses);g(this).addClass(n.sTable);if(""!==k.oScroll.sX||""!==k.oScroll.sY)k.oScroll.iBarWidth=Db();!0===k.oScroll.sX&&(k.oScroll.sX=
"100%");k.iInitDisplayStart===l&&(k.iInitDisplayStart=h.iDisplayStart,k._iDisplayStart=h.iDisplayStart);null!==h.iDeferLoading&&(k.bDeferLoading=!0,i=g.isArray(h.iDeferLoading),k._iRecordsDisplay=i?h.iDeferLoading[0]:h.iDeferLoading,k._iRecordsTotal=i?h.iDeferLoading[1]:h.iDeferLoading);""!==h.oLanguage.sUrl?(k.oLanguage.sUrl=h.oLanguage.sUrl,g.getJSON(k.oLanguage.sUrl,null,function(a){M(a);G(m.oLanguage,a);g.extend(true,k.oLanguage,h.oLanguage,a);ra(k)}),e=!0):g.extend(!0,k.oLanguage,h.oLanguage);
null===h.asStripeClasses&&(k.asStripeClasses=[n.sStripeOdd,n.sStripeEven]);var i=k.asStripeClasses,r=g("tbody tr:eq(0)",this);-1!==g.inArray(!0,g.map(i,function(a){return r.hasClass(a)}))&&(g("tbody tr",this).removeClass(i.join(" ")),k.asDestroyStripes=i.slice());var o=[],q,i=this.getElementsByTagName("thead");0!==i.length&&($(k.aoHeader,i[0]),o=ma(k));if(null===h.aoColumns){q=[];i=0;for(j=o.length;i<j;i++)q.push(null)}else q=h.aoColumns;i=0;for(j=q.length;i<j;i++)Aa(k,o?o[i]:null);gb(k,h.aoColumnDefs,
q,function(a,b){fa(k,a,b)});if(r.length){var s=function(a,b){return a.getAttribute("data-"+b)?b:null};g.each(ia(k,r[0]).cells,function(a,b){var c=k.aoColumns[a];if(c.mData===a){var d=s(b,"sort")||s(b,"order"),e=s(b,"filter")||s(b,"search");if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:l,type:d!==null?a+".@data-"+d:l,filter:e!==null?a+".@data-"+e:l};fa(k,a)}}})}var u=k.oFeatures;h.bStateSave&&(u.bStateSave=!0,Gb(k,h),y(k,"aoDrawCallback",ta,"state_save"));if(h.aaSorting===
l){o=k.aaSorting;i=0;for(j=o.length;i<j;i++)o[i][1]=k.aoColumns[i].asSorting[0]}sa(k);u.bSort&&y(k,"aoDrawCallback",function(){if(k.bSorted){var a=Q(k),b={};g.each(a,function(a,c){b[c.src]=c.dir});t(k,null,"order",[k,a,b]);Fb(k)}});y(k,"aoDrawCallback",function(){(k.bSorted||z(k)==="ssp"||u.bDeferRender)&&sa(k)},"sc");eb(k);i=g(this).children("caption").each(function(){this._captionSide=g(this).css("caption-side")});j=g(this).children("thead");0===j.length&&(j=g("<thead/>").appendTo(this));k.nTHead=
j[0];j=g(this).children("tbody");0===j.length&&(j=g("<tbody/>").appendTo(this));k.nTBody=j[0];j=g(this).children("tfoot");if(0===j.length&&0<i.length&&(""!==k.oScroll.sX||""!==k.oScroll.sY))j=g("<tfoot/>").appendTo(this);0===j.length||0===j.children().length?g(this).addClass(n.sNoFooter):0<j.length&&(k.nTFoot=j[0],$(k.aoFooter,k.nTFoot));if(h.aaData)for(i=0;i<h.aaData.length;i++)H(k,h.aaData[i]);else(k.bDeferLoading||"dom"==z(k))&&ha(k,g(k.nTBody).children("tr"));k.aiDisplay=k.aiDisplayMaster.slice();
k.bInitialised=!0;!1===e&&ra(k)}});b=null;return this};var Ob=[],v=Array.prototype,Wb=function(a){var b,c,d=p.settings,e=g.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=g.inArray(a,e),-1!==b?[d[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=g(a):a instanceof g&&(c=a)}else return[];if(c)return c.map(function(){b=g.inArray(this,e);return-1!==b?d[b]:null}).toArray()};
p.Api=q=function(a,b){if(!this instanceof q)throw"DT API must be constructed as a new object";var c=[],d=function(a){(a=Wb(a))&&c.push.apply(c,a)};if(g.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);else d(a);this.context=Ja(c);b&&this.push.apply(this,b.toArray?b.toArray():b);this.selector={rows:null,cols:null,opts:null};q.extend(this,this,Ob)};q.prototype={concat:v.concat,context:[],each:function(a){if(v.forEach)v.forEach.call(this,a,this);else for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],
b,this);return this},eq:function(a){var b=this.context;return b.length>a?new q(b[a],this[a]):null},filter:function(a){var b=[];if(v.filter)b=v.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new q(this.context,b)},flatten:function(){var a=[];return new q(this.context,a.concat.apply(a,this.toArray()))},join:v.join,indexOf:v.indexOf||function(a,b){for(var c=b||0,d=this.length;c<d;c++)if(this[c]===a)return c;return-1},iterator:function(a,
b,c){var d=[],e,f,h,g,j,n=this.context,m,o,k=this.selector;"string"===typeof a&&(c=b,b=a,a=!1);f=0;for(h=n.length;f<h;f++)if("table"===b)e=c(n[f],f),e!==l&&d.push(e);else if("columns"===b||"rows"===b)e=c(n[f],this[f],f),e!==l&&d.push(e);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){o=this[f];"column-rows"===b&&(m=Ya(n[f],k.opts));g=0;for(j=o.length;g<j;g++)e=o[g],e="cell"===b?c(n[f],e.row,e.column,f,g):c(n[f],e,f,g,m),e!==l&&d.push(e)}return d.length?(a=new q(n,a?d.concat.apply([],
d):d),b=a.selector,b.rows=k.rows,b.cols=k.cols,b.opts=k.opts,a):this},lastIndexOf:v.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(v.map)b=v.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new q(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:v.pop,push:v.push,reduce:v.reduce||function(a,b){return fb(this,a,b,0,this.length,1)},reduceRight:v.reduceRight||
function(a,b){return fb(this,a,b,this.length-1,-1,-1)},reverse:v.reverse,selector:null,shift:v.shift,sort:v.sort,splice:v.splice,toArray:function(){return v.slice.call(this)},to$:function(){return g(this)},toJQuery:function(){return g(this)},unique:function(){return new q(this.context,Ja(this))},unshift:v.unshift};q.extend=function(a,b,c){if(b&&(b instanceof q||b.__dt_wrapper)){var d,e,f,h=function(b,c){return function(){var d=b.apply(a,arguments);q.extend(d,d,c.methodExt);return d}};d=0;for(e=c.length;d<
e;d++)f=c[d],b[f.name]="function"===typeof f.val?h(f.val,f):g.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,q.extend(a,b[f.name],f.propExt)}};q.register=r=function(a,b){if(g.isArray(a))for(var c=0,d=a.length;c<d;c++)q.register(a[c],b);else{for(var e=a.split("."),f=Ob,h,i,c=0,d=e.length;c<d;c++){h=(i=-1!==e[c].indexOf("()"))?e[c].replace("()",""):e[c];var j;a:{j=0;for(var n=f.length;j<n;j++)if(f[j].name===h){j=f[j];break a}j=null}j||(j={name:h,val:{},methodExt:[],propExt:[]},f.push(j));c===
d-1?j.val=b:f=i?j.methodExt:j.propExt}q.ready&&p.api.build()}};q.registerPlural=x=function(a,b,c){q.register(a,c);q.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof q?a.length?g.isArray(a[0])?new q(a.context,a[0]):a[0]:l:a})};r("tables()",function(a){var b;if(a){b=q;var c=this.context;if("number"===typeof a)a=[c[a]];else var d=g.map(c,function(a){return a.nTable}),a=g(d).filter(a).map(function(){var a=g.inArray(this,d);return c[a]}).toArray();b=new b(a)}else b=
this;return b});r("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new q(b[0]):a});x("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable})});x("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody})});x("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead})});x("tables().footer()","table().footer()",function(){return this.iterator("table",
function(a){return a.nTFoot})});r("draw()",function(a){return this.iterator("table",function(b){K(b,!1===a)})});r("page()",function(a){return a===l?this.page.info().page:this.iterator("table",function(b){Ra(b,a)})});r("page.info()",function(){if(0===this.context.length)return l;var a=this.context[0],b=a._iDisplayStart,c=a._iDisplayLength,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d}});
r("page.len()",function(a){return a===l?0!==this.context.length?this.context[0]._iDisplayLength:l:this.iterator("table",function(b){Pa(b,a)})});var Pb=function(a,b,c){"ssp"==z(a)?K(a,b):(C(a,!0),na(a,[],function(c){ja(a);for(var c=oa(a,c),d=0,h=c.length;d<h;d++)H(a,c[d]);K(a,b);C(a,!1)}));if(c){var d=new q(a);d.one("draw",function(){c(d.ajax.json())})}};r("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});r("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});
r("ajax.reload()",function(a,b){return this.iterator("table",function(c){Pb(c,!1===b,a)})});r("ajax.url()",function(a){var b=this.context;if(a===l){if(0===b.length)return l;b=b[0];return b.ajax?g.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){g.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});r("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Pb(c,!1===b,a)})});var Za=function(a,b){var c=[],d,e,f,h,i,j;if(!a||"string"===typeof a||
a.length===l)a=[a];f=0;for(h=a.length;f<h;f++){e=a[f]&&a[f].split?a[f].split(","):[a[f]];i=0;for(j=e.length;i<j;i++)(d=b("string"===typeof e[i]?g.trim(e[i]):e[i]))&&d.length&&c.push.apply(c,d)}return c},$a=function(a){a||(a={});a.filter&&!a.search&&(a.search=a.filter);return{search:a.search||"none",order:a.order||"current",page:a.page||"all"}},ab=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Ya=function(a,b){var c,
d,e,f=[],h=a.aiDisplay;c=a.aiDisplayMaster;var i=b.search;d=b.order;e=b.page;if("ssp"==z(a))return"removed"===i?[]:R(0,c.length);if("current"==e){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c<d;c++)f.push(h[c])}else if("current"==d||"applied"==d)f="none"==i?c.slice():"applied"==i?h.slice():g.map(c,function(a){return-1===g.inArray(a,h)?a:null});else if("index"==d||"original"==d){c=0;for(d=a.aoData.length;c<d;c++)"none"==i?f.push(c):(e=g.inArray(c,h),(-1===e&&"removed"==i||1===e&&"applied"==i)&&f.push(c))}return f};
r("rows()",function(a,b){a===l?a="":g.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=b;return Za(a,function(a){var b=Lb(a);if(b!==null&&!e)return[b];var i=Ya(c,e);if(b!==null&&g.inArray(b,i)!==-1)return[b];if(!a)return i;for(var b=[],j=0,n=i.length;j<n;j++)b.push(c.aoData[i[j]].nTr);return a.nodeName&&g.inArray(a,b)!==-1?[a._DT_RowIndex]:g(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()})});c.selector.rows=a;c.selector.opts=b;return c});r("rows().nodes()",
function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||l})});r("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return xa(a.aoData,b,"_aData")})});x("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:d._aSortData})});x("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){la(b,c,a)})});x("rows().indexes()","row().index()",function(){return this.iterator("row",
function(a,b){return b})});x("rows().remove()","row().remove()",function(){var a=this;return this.iterator("row",function(b,c,d){var e=b.aoData;e.splice(c,1);for(var f=0,h=e.length;f<h;f++)null!==e[f].nTr&&(e[f].nTr._DT_RowIndex=f);g.inArray(c,b.aiDisplay);ka(b.aiDisplayMaster,c);ka(b.aiDisplay,c);ka(a[d],c,!1);Qa(b)})});r("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,h,g=[];f=0;for(h=a.length;f<h;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?g.push(ha(b,c)[0]):
g.push(H(b,c));return g}),c=this.rows(-1);c.pop();c.push.apply(c,b.toArray());return c});r("row()",function(a,b){return ab(this.rows(a,b))});r("row().data()",function(a){var b=this.context;if(a===l)return b.length&&this.length?b[0].aoData[this[0]]._aData:l;b[0].aoData[this[0]]._aData=a;la(b[0],this[0],"data");return this});r("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});r("row.add()",function(a){a instanceof g&&a.length&&(a=a[0]);var b=
this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ha(b,a)[0]:H(b,a)});return this.row(b[0])});var Qb=function(a){var b=this.context;if(b.length&&this.length){var c=b[0].aoData[this[0]];if(c._details){(c._detailsShow=a)?c._details.insertAfter(c.nTr):c._details.remove();var d=b[0],e=new q(d);e.off("draw.dt.DT_details column-visibility.dt.DT_details");0<B(d.aoData,"_details").length&&(e.on("draw.dt.DT_details",function(){e.rows({page:"current"}).eq(0).each(function(a){a=
d.aoData[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),e.on("column-visibility.dt.DT_details",function(a,b){for(var c,d=Y(b),e=0,g=b.aoData.length;e<g;e++)c=b.aoData[e],c._details&&c._details.children("td[colspan]").attr("colspan",d)}))}}return this};r("row().child()",function(a,b){var c=this.context;if(a===l)return c.length&&this.length?c[0].aoData[this[0]]._details:l;if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(a.nodeName&&"tr"===a.nodeName.toLowerCase())e.push(a);
else{var c=g("<tr><td/></tr>");g("td",c).addClass(b).html(a)[0].colSpan=Y(d);e.push(c[0])}};if(g.isArray(a)||a instanceof g)for(var h=0,i=a.length;h<i;h++)f(a[h],b);else f(a,b);c._details&&c._details.remove();c._details=g(e);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});r(["row().child.show()","row().child().show()"],function(){Qb.call(this,!0);return this});r(["row().child.hide()","row().child().hide()"],function(){Qb.call(this,!1);return this});r("row().child.isShown()",function(){var a=
this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var Xb=/^(.*):(name|visIdx|visible)$/;r("columns()",function(a,b){a===l?a="":g.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(b){var c=a,f=b.aoColumns,h=B(f,"sName"),i=B(f,"nTh");return Za(c,function(a){var c=Lb(a);if(a==="")return R(f.length);if(c!==null)return[c>=0?c:f.length+c];var e=typeof a==="string"?a.match(Xb):"";if(e)switch(e[2]){case "visIdx":case "visible":a=parseInt(e[1],10);
if(a<0){c=g.map(f,function(a,b){return a.bVisible?b:null});return[c[c.length+a]]}return[ga(b,a)];case "name":return g.map(h,function(a,b){return a===e[1]?b:null})}else return g(i).filter(a).map(function(){return g.inArray(this,i)}).toArray()})});c.selector.cols=a;c.selector.opts=b;return c});x("columns().header()","column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh})});x("columns().footer()","column().footer()",function(){return this.iterator("column",
function(a,b){return a.aoColumns[b].nTf})});x("columns().data()","column().data()",function(){return this.iterator("column-rows",function(a,b,c,d,e){for(var c=[],d=0,f=e.length;d<f;d++)c.push(A(a,e[d],b,""));return c})});x("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return xa(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)})});x("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,
e){return xa(a.aoData,e,"anCells",b)})});x("columns().visible()","column().visible()",function(a){return this.iterator("column",function(b,c){var d;if(a===l)d=b.aoColumns[c].bVisible;else{var e=b.aoColumns;d=e[c];var f=b.aoData,h,i,j;if(a===l)d=d.bVisible;else{if(d.bVisible!==a){if(a){var n=g.inArray(!0,B(e,"bVisible"),c+1);h=0;for(i=f.length;h<i;h++)j=f[h].nTr,e=f[h].anCells,j&&j.insertBefore(e[c],e[n]||null)}else g(B(b.aoData,"anCells",c)).detach(),d.bVisible=!1,I(b,b.aoHeader),I(b,b.aoFooter),
ta(b);d.bVisible=a;I(b,b.aoHeader);I(b,b.aoFooter);U(b);(b.oScroll.sX||b.oScroll.sY)&&V(b);t(b,null,"column-visibility",[b,c,a]);ta(b)}d=void 0}}return d})});x("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?X(b,c):c})});r("columns.adjust()",function(){return this.iterator("table",function(a){U(a)})});r("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return ga(c,
b);if("fromData"===a||"toVisible"===a)return X(c,b)}});r("column()",function(a,b){return ab(this.columns(a,b))});r("cells()",function(a,b,c){g.isPlainObject(a)&&(a.row?(c=b,b=null):(c=a,a=null));g.isPlainObject(b)&&(c=b,b=null);if(null===b||b===l)return this.iterator("table",function(b){var d=a,e=$a(c),f=b.aoData,h=Ya(b,e),e=xa(f,h,"anCells"),i=g([].concat.apply([],e)),j,m=b.aoColumns.length,n,l,p,r;return Za(d,function(a){if(a){if(g.isPlainObject(a))return[a]}else{n=[];l=0;for(p=h.length;l<p;l++){j=
h[l];for(r=0;r<m;r++)n.push({row:j,column:r})}return n}return i.filter(a).map(function(a,b){j=b.parentNode._DT_RowIndex;return{row:j,column:g.inArray(b,f[j].anCells)}}).toArray()})});var d=this.columns(b,c),e=this.rows(a,c),f,h,i,j,n,m=this.iterator("table",function(a,b){f=[];h=0;for(i=e[b].length;h<i;h++){j=0;for(n=d[b].length;j<n;j++)f.push({row:e[b][h],column:d[b][j]})}return f});g.extend(m.selector,{cols:b,rows:a,opts:c});return m});x("cells().nodes()","cell().node()",function(){return this.iterator("cell",
function(a,b,c){return a.aoData[b].anCells[c]})});r("cells().data()",function(){return this.iterator("cell",function(a,b,c){return A(a,b,c)})});x("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]})});x("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:X(a,c)}})});r(["cells().invalidate()","cell().invalidate()"],function(a){var b=
this.selector;this.rows(b.rows,b.opts).invalidate(a);return this});r("cell()",function(a,b,c){return ab(this.cells(a,b,c))});r("cell().data()",function(a){var b=this.context,c=this[0];if(a===l)return b.length&&c.length?A(b[0],c[0].row,c[0].column):l;Ea(b[0],c[0].row,c[0].column,a);la(b[0],c[0].row,"data",c[0].column);return this});r("order()",function(a,b){var c=this.context;if(a===l)return 0!==c.length?c[0].aaSorting:l;"number"===typeof a?a=[[a,b]]:g.isArray(a[0])||(a=Array.prototype.slice.call(arguments));
return this.iterator("table",function(b){b.aaSorting=a.slice()})});r("order.listener()",function(a,b,c){return this.iterator("table",function(d){Ka(d,a,b,c)})});r(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];g.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});r("search()",function(a,b,c,d){var e=this.context;return a===l?0!==e.length?e[0].oPreviousSearch.sSearch:l:this.iterator("table",function(e){e.oFeatures.bFilter&&
aa(e,g.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});r(["columns().search()","column().search()"],function(a,b,c,d){return this.iterator("column",function(e,f){var h=e.aoPreSearchCols;if(a===l)return h[f].sSearch;e.oFeatures.bFilter&&(g.extend(h[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),aa(e,e.oPreviousSearch,1))})});p.versionCheck=p.fnVersionCheck=function(a){for(var b=
p.version.split("."),a=a.split("."),c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};p.isDataTable=p.fnIsDataTable=function(a){var b=g(a).get(0),c=!1;g.each(p.settings,function(a,e){if(e.nTable===b||e.nScrollHead===b||e.nScrollFoot===b)c=!0});return c};p.tables=p.fnTables=function(a){return jQuery.map(p.settings,function(b){if(!a||a&&g(b.nTable).is(":visible"))return b.nTable})};p.camelToHungarian=G;r("$()",function(a,b){var c=this.rows(b).nodes(),
c=g(c);return g([].concat(c.filter(a).toArray(),c.find(a).toArray()))});g.each(["on","one","off"],function(a,b){r(b+"()",function(){var a=Array.prototype.slice.call(arguments);-1===a[0].indexOf(".dt")&&(a[0]+=".dt");var d=g(this.tables().nodes());d[b].apply(d,a);return this})});r("clear()",function(){return this.iterator("table",function(a){ja(a)})});r("settings()",function(){return new q(this.context,this.context)});r("data()",function(){return this.iterator("table",function(a){return B(a.aoData,
"_aData")}).flatten()});r("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,h=b.nTHead,i=b.nTFoot,j=g(e),f=g(f),n=g(b.nTableWrapper),m=g.map(b.aoData,function(a){return a.nTr}),l;b.bDestroying=!0;t(b,"aoDestroyCallback","destroy",[b]);a||(new q(b)).columns().visible(!0);n.unbind(".DT").find(":not(tbody *)").unbind(".DT");g(za).unbind(".DT-"+b.sInstance);e!=h.parentNode&&(j.children("thead").detach(),j.append(h));
i&&e!=i.parentNode&&(j.children("tfoot").detach(),j.append(i));j.detach();n.detach();b.aaSorting=[];b.aaSortingFixed=[];sa(b);g(m).removeClass(b.asStripeClasses.join(" "));g("th, td",h).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);b.bJUI&&(g("th span."+d.sSortIcon+", td span."+d.sSortIcon,h).detach(),g("th, td",h).each(function(){var a=g("div."+d.sSortJUIWrapper,this);g(this).append(a.contents());a.detach()}));!a&&c&&c.insertBefore(e,b.nTableReinsertBefore);
f.children().detach();f.append(m);j.css("width",b.sDestroyWidth).removeClass(d.sTable);(l=b.asDestroyStripes.length)&&f.children().each(function(a){g(this).addClass(b.asDestroyStripes[a%l])});c=g.inArray(b,p.settings);-1!==c&&p.settings.splice(c,1)})});p.version="1.10.0";p.settings=[];p.models={};p.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};p.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null};p.models.oColumn=
{idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};p.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,
aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,
fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,
iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": 升序排列",sSortDescending:":降序排列"},oPaginate:{sFirst:"第一页",sLast:"最后一页",sNext:"下一页",sPrevious:"上一页"},sEmptyTable:"没有数据",sInfo:"显示 _START_ 到 _END_ ,共 _TOTAL_ 条",sInfoEmpty:"没有数据",sInfoFiltered:"(从 _MAX_ 条中过滤)",sInfoPostFix:"",sDecimal:"",
sThousands:",",sLengthMenu:"显示 _MENU_ 条",sLoadingRecords:"加载中...",sProcessing:"处理中...",sSearch:"从当前数据中检索:",sUrl:"",sZeroRecords:"没有找到匹配的记录"},oSearch:g.extend({},p.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null};S(p.defaults);p.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,
mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};S(p.defaults.column);p.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,
bScrollbarLeft:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,
nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:l,oAjaxData:l,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,
oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==z(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==z(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,
nScrollFoot:null,aLastSort:[],oPlugins:{}};p.ext=u={classes:{},errMode:"alert",feature:[],search:[],internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:p.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:p.version};g.extend(u,{afnFiltering:u.search,aTypes:u.type.detect,ofnSearch:u.type.search,oSort:u.type.order,afnSortData:u.order,aoFeatures:u.feature,oApi:u.internal,oStdClasses:u.classes,oPagination:u.pager});
g.extend(p.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",
sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",
sJUIHeader:"",sJUIFooter:""});var ya="",ya="",E=ya+"ui-state-default",ea=ya+"css_right ui-icon ui-icon-",Rb=ya+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";g.extend(p.ext.oJUIClasses,p.ext.classes,{sPageButton:"fg-button ui-button "+E,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:E+" sorting_asc",sSortDesc:E+" sorting_desc",sSortable:E+" sorting",
sSortableAsc:E+" sorting_asc_disabled",sSortableDesc:E+" sorting_desc_disabled",sSortableNone:E+" sorting_disabled",sSortJUIAsc:ea+"triangle-1-n",sSortJUIDesc:ea+"triangle-1-s",sSortJUI:ea+"carat-2-n-s",sSortJUIAscAllowed:ea+"carat-1-n",sSortJUIDescAllowed:ea+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+E,sScrollFoot:"dataTables_scrollFoot "+E,sHeaderTH:E,sFooterTH:E,sJUIHeader:Rb+" ui-corner-tl ui-corner-tr",sJUIFooter:Rb+
" ui-corner-bl ui-corner-br"});var Ib=p.ext.pager;g.extend(Ib,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},simple_numbers:function(a,b){return["previous",Ua(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Ua(a,b),"next","last"]},_numbers:Ua,numbers_length:7});g.extend(!0,p.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var h=a.oClasses,i=a.oLanguage.oPaginate,j,l,m=0,o=function(b,d){var k,p,r,q,s=function(b){Ra(a,b.data.action,
true)};k=0;for(p=d.length;k<p;k++){q=d[k];if(g.isArray(q)){r=g("<"+(q.DT_el||"div")+"/>").appendTo(b);o(r,q)}else{l=j="";switch(q){case "ellipsis":b.append("<span>&hellip;</span>");break;case "first":j=i.sFirst;l=q+(e>0?"":" "+h.sPageButtonDisabled);break;case "previous":j=i.sPrevious;l=q+(e>0?"":" "+h.sPageButtonDisabled);break;case "next":j=i.sNext;l=q+(e<f-1?"":" "+h.sPageButtonDisabled);break;case "last":j=i.sLast;l=q+(e<f-1?"":" "+h.sPageButtonDisabled);break;default:j=q+1;l=e===q?h.sPageButtonActive:
""}if(j){r=g("<a>",{"class":h.sPageButton+" "+l,"aria-controls":a.sTableId,"data-dt-idx":m,tabindex:a.iTabIndex,id:c===0&&typeof q==="string"?a.sTableId+"_"+q:null}).html(j).appendTo(b);Ta(r,{action:q},s);m++}}}},k=g(N.activeElement).data("dt-idx");o(g(b).empty(),d);k!==null&&g(b).find("[data-dt-idx="+k+"]").focus()}}});var va=function(a,b,c,d){if(!a||"-"===a)return-Infinity;b&&(a=Mb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};g.extend(u.type.order,{"date-pre":function(a){return Date.parse(a)||
0},"html-pre":function(a){return!a?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return"string"===typeof a?a.toLowerCase():!a||!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});bb("");g.extend(p.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Xa(a,c)?"num"+c:null},function(a){if(a&&!Vb.test(a))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||da(a)?"date":
null},function(a,b){var c=b.oLanguage.sDecimal;return Xa(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Nb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Nb(a,c,!0)?"html-num-fmt"+c:null},function(a){return da(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);g.extend(p.ext.type.search,{html:function(a){return da(a)?"":"string"===typeof a?a.replace(Kb," ").replace(wa,""):""},string:function(a){return da(a)?"":"string"===typeof a?a.replace(Kb,
" "):a}});g.extend(!0,p.ext.renderer,{header:{_:function(a,b,c,d){g(a.nTable).on("order.dt.DT",function(a,f,g,i){a=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(i[a]=="asc"?d.sSortAsc:i[a]=="desc"?d.sSortDesc:c.sSortingClass)})},jqueryui:function(a,b,c,d){var e=c.idx;g("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(g("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);g(a.nTable).on("order.dt.DT",function(a,g,i,j){b.removeClass(d.sSortAsc+
" "+d.sSortDesc).addClass(j[e]=="asc"?d.sSortAsc:j[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(j[e]=="asc"?d.sSortJUIAsc:j[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)})}}});p.render={number:function(a,b,c,d){return{display:function(e){var e=parseFloat(e),f=parseInt(e,10),e=c?(b+(e-f).toFixed(c)).substring(2):"";return(d||"")+f.toString().replace(/\B(?=(\d{3})+(?!\d))/g,
a)+e}}}};g.extend(p.ext.internal,{_fnExternApiFunc:Jb,_fnBuildAjax:na,_fnAjaxUpdate:ib,_fnAjaxParameters:rb,_fnAjaxUpdateDraw:sb,_fnAjaxDataSrc:oa,_fnAddColumn:Aa,_fnColumnOptions:fa,_fnAdjustColumnSizing:U,_fnVisibleToColumnIndex:ga,_fnColumnIndexToVisible:X,_fnVisbleColumns:Y,_fnGetColumns:W,_fnColumnTypes:Da,_fnApplyColumnDefs:gb,_fnHungarianMap:S,_fnCamelToHungarian:G,_fnLanguageCompat:M,_fnBrowserDetect:eb,_fnAddData:H,_fnAddTr:ha,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==l?b._DT_RowIndex:
null},_fnNodeToColumnIndex:function(a,b,c){return g.inArray(c,a.aoData[b].anCells)},_fnGetCellData:A,_fnSetCellData:Ea,_fnSplitObjNotation:Ga,_fnGetObjectDataFn:T,_fnSetObjectDataFn:Ba,_fnGetDataMaster:Ha,_fnClearTable:ja,_fnDeleteIndex:ka,_fnInvalidateRow:la,_fnGetRowElements:ia,_fnCreateTr:Fa,_fnBuildHead:hb,_fnDrawHead:I,_fnDraw:J,_fnReDraw:K,_fnAddOptionsHtml:kb,_fnDetectHeader:$,_fnGetUniqueThs:ma,_fnFeatureHtmlFilter:mb,_fnFilterComplete:aa,_fnFilterCustom:vb,_fnFilterColumn:ub,_fnFilter:tb,
_fnFilterCreateSearch:Na,_fnEscapeRegex:Oa,_fnFilterData:wb,_fnFeatureHtmlInfo:pb,_fnUpdateInfo:xb,_fnInfoMacros:yb,_fnInitialise:ra,_fnInitComplete:pa,_fnLengthChange:Pa,_fnFeatureHtmlLength:lb,_fnFeatureHtmlPaginate:qb,_fnPageChange:Ra,_fnFeatureHtmlProcessing:nb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:ob,_fnScrollDraw:V,_fnApplyToChildren:F,_fnCalculateColumnWidths:Ca,_fnThrottle:Ma,_fnConvertToWidth:zb,_fnScrollingWidthAdjust:Bb,_fnGetWidestNode:Ab,_fnGetMaxLenString:Cb,_fnStringToCss:s,_fnScrollBarWidth:Db,
_fnSortFlatten:Q,_fnSort:jb,_fnSortAria:Fb,_fnSortListener:Sa,_fnSortAttachListener:Ka,_fnSortingClasses:sa,_fnSortData:Eb,_fnSaveState:ta,_fnLoadState:Gb,_fnSettingsFromNode:ua,_fnLog:O,_fnMap:D,_fnBindAction:Ta,_fnCallbackReg:y,_fnCallbackFire:t,_fnLengthOverflow:Qa,_fnRenderer:La,_fnDataSource:z,_fnRowAttributes:Ia,_fnCalculateEnd:function(){}});g.fn.dataTable=p;g.fn.dataTableSettings=p.settings;g.fn.dataTableExt=p.ext;g.fn.DataTable=function(a){return g(this).dataTable(a).api()};g.each(p,function(a,
b){g.fn.DataTable[a]=b});return g.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],M):"object"===typeof exports?M(require("jquery")):jQuery&&!jQuery.fn.dataTable&&M(jQuery)})(window,document);

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1,182 @@
/* iCheck.js Minimal skin
----------------------------------- */
.icheckbox,.iradio{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(minimal.png) no-repeat;border: none;cursor: pointer}
.icheckbox,.icheckbox.static:hover{background-position: 0 0}
.icheckbox.hover,.icheckbox:hover{background-position: -20px 0}
.icheckbox.checked{background-position: -40px 0}
.icheckbox.disabled{background-position: -60px 0;cursor: default}
.icheckbox.checked.disabled{background-position: -80px 0}
.iradio,.iradio.static:hover{background-position: -100px 0}
.iradio.hover,.iradio:hover{background-position: -120px 0}
.iradio.checked{background-position: -140px 0}
.iradio.disabled{background-position: -160px 0;cursor: default}
.iradio.checked.disabled{background-position: -180px 0}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox,.iradio{background-image: url(minimal@2x.png);
-webkit-background-size: 200px 20px;
background-size: 200px 20px}
}
/* red */
.icheckbox-red,.iradio-red{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(red.png) no-repeat;border: none;cursor: pointer}
.icheckbox-red,.icheckbox-red.static:hover{background-position: 0 0}
.icheckbox-red.hover,.icheckbox-red:hover{background-position: -20px 0}
.icheckbox-red.checked{background-position: -40px 0}
.icheckbox-red.disabled{background-position: -60px 0;cursor: default}
.icheckbox-red.checked.disabled{background-position: -80px 0}
.iradio-red,.iradio-red.static:hover{background-position: -100px 0}
.iradio-red.hover,.iradio-red:hover{background-position: -120px 0}
.iradio-red.checked{background-position: -140px 0}
.iradio-red.disabled{background-position: -160px 0;cursor: default}
.iradio-red.checked.disabled{background-position: -180px 0}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-red,.iradio-red{background-image: url(red@2x.png);
-webkit-background-size: 200px 20px;
background-size: 200px 20px}
}
/* green */
.icheckbox-green,.iradio-green{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(green.png) no-repeat;border: none;cursor: pointer}
.icheckbox-green,.icheckbox-green.static:hover{background-position: 0 0}
.icheckbox-green.hover,.icheckbox-green:hover{background-position: -20px 0}
.icheckbox-green.checked{background-position: -40px 0}
.icheckbox-green.disabled{background-position: -60px 0;cursor: default}
.icheckbox-green.checked.disabled{background-position: -80px 0}
.iradio-green,.iradio-green.static:hover{background-position: -100px 0}
.iradio-green.hover,.iradio-green:hover{background-position: -120px 0}
.iradio-green.checked{background-position: -140px 0}
.iradio-green.disabled{background-position: -160px 0;cursor: default}
.iradio-green.checked.disabled{background-position: -180px 0}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-green,.iradio-green{background-image: url(green@2x.png);
-webkit-background-size: 200px 20px;
background-size: 200px 20px}
}
/* blue */
.icheckbox-blue,.iradio-blue{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(blue.png) no-repeat;border: none;cursor: pointer}
.icheckbox-blue,.icheckbox-blue.static:hover{background-position: 0 0}
.icheckbox-blue.hover,.icheckbox-blue:hover{background-position: -20px 0}
.icheckbox-blue.checked{background-position: -40px 0}
.icheckbox-blue.disabled{background-position: -60px 0;cursor: default}
.icheckbox-blue.checked.disabled{background-position: -80px 0}
.iradio-blue,.iradio-blue.static:hover{background-position: -100px 0}
.iradio-blue.hover,.iradio-blue:hover{background-position: -120px 0}
.iradio-blue.checked{background-position: -140px 0}
.iradio-blue.disabled{background-position: -160px 0;cursor: default}
.iradio-blue.checked.disabled{background-position: -180px 0}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-blue,.iradio-blue{background-image: url(blue@2x.png);
-webkit-background-size: 200px 20px;
background-size: 200px 20px}
}
/* aero */
.icheckbox-aero,.iradio-aero{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(aero.png) no-repeat;border: none;cursor: pointer}
.icheckbox-aero,.icheckbox-aero.static:hover{background-position: 0 0}
.icheckbox-aero.hover,.icheckbox-aero:hover{background-position: -20px 0}
.icheckbox-aero.checked{background-position: -40px 0}
.icheckbox-aero.disabled{background-position: -60px 0;cursor: default}
.icheckbox-aero.checked.disabled{background-position: -80px 0}
.iradio-aero,.iradio-aero.static:hover{background-position: -100px 0}
.iradio-aero.hover,.iradio-aero:hover{background-position: -120px 0}
.iradio-aero.checked{background-position: -140px 0}
.iradio-aero.disabled{background-position: -160px 0;cursor: default}
.iradio-aero.checked.disabled{background-position: -180px 0}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-aero,.iradio-aero{background-image: url(aero@2x.png);
-webkit-background-size: 200px 20px;
background-size: 200px 20px}
}
/* grey */
.icheckbox-grey,.iradio-grey{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(grey.png) no-repeat;border: none;cursor: pointer}
.icheckbox-grey,.icheckbox-grey.static:hover{background-position: 0 0}
.icheckbox-grey.hover,.icheckbox-grey:hover{background-position: -20px 0}
.icheckbox-grey.checked{background-position: -40px 0}
.icheckbox-grey.disabled{background-position: -60px 0;cursor: default}
.icheckbox-grey.checked.disabled{background-position: -80px 0}
.iradio-grey,.iradio-grey.static:hover{background-position: -100px 0}
.iradio-grey.hover,.iradio-grey:hover{background-position: -120px 0}
.iradio-grey.checked{background-position: -140px 0}
.iradio-grey.disabled{background-position: -160px 0;cursor: default}
.iradio-grey.checked.disabled{background-position: -180px 0}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-grey,.iradio-grey{background-image: url(grey@2x.png);
-webkit-background-size: 200px 20px;
background-size: 200px 20px}
}
/* orange */
.icheckbox-orange,.iradio-orange{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(orange.png) no-repeat;border: none;cursor: pointer}
.icheckbox-orange,.icheckbox-orange.static:hover{background-position: 0 0}
.icheckbox-orange.hover,.icheckbox-orange:hover{background-position: -20px 0}
.icheckbox-orange.checked{background-position: -40px 0}
.icheckbox-orange.disabled{background-position: -60px 0;cursor: default}
.icheckbox-orange.checked.disabled{background-position: -80px 0}
.iradio-orange,.iradio-orange.static:hover{background-position: -100px 0}
.iradio-orange.hover,.iradio-orange:hover{background-position: -120px 0}
.iradio-orange.checked{background-position: -140px 0}
.iradio-orange.disabled{background-position: -160px 0;cursor: default}
.iradio-orange.checked.disabled{background-position: -180px 0}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-orange,.iradio-orange{background-image: url(orange@2x.png);
-webkit-background-size: 200px 20px;
background-size: 200px 20px}
}
/* yellow */
.icheckbox-yellow,.iradio-yellow{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(yellow.png) no-repeat;border: none;cursor: pointer}
.icheckbox-yellow,.icheckbox-yellow.static:hover{background-position: 0 0}
.icheckbox-yellow.hover,.icheckbox-yellow:hover{background-position: -20px 0}
.icheckbox-yellow.checked{background-position: -40px 0}
.icheckbox-yellow.disabled{background-position: -60px 0;cursor: default}
.icheckbox-yellow.checked.disabled{background-position: -80px 0}
.iradio-yellow,.iradio-yellow.static:hover{background-position: -100px 0}
.iradio-yellow.hover,.iradio-yellow:hover{background-position: -120px 0}
.iradio-yellow.checked{background-position: -140px 0}
.iradio-yellow.disabled{background-position: -160px 0;cursor: default}
.iradio-yellow.checked.disabled{background-position: -180px 0}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-yellow,.iradio-yellow{background-image: url(yellow@2x.png);
-webkit-background-size: 200px 20px;
background-size: 200px 20px}
}
/* pink */
.icheckbox-pink,.iradio-pink{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(pink.png) no-repeat;border: none;cursor: pointer}
.icheckbox-pink,.icheckbox-pink.static:hover{background-position: 0 0}
.icheckbox-pink.hover,.icheckbox-pink:hover{background-position: -20px 0}
.icheckbox-pink.checked{background-position: -40px 0}
.icheckbox-pink.disabled{background-position: -60px 0;cursor: default}
.icheckbox-pink.checked.disabled{background-position: -80px 0}
.iradio-pink,.iradio-pink.static:hover{background-position: -100px 0}
.iradio-pink.hover,.iradio-pink:hover{background-position: -120px 0}
.iradio-pink.checked{background-position: -140px 0}
.iradio-pink.disabled{background-position: -160px 0;cursor: default}
.iradio-pink.checked.disabled{background-position: -180px 0}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-pink,.iradio-pink{background-image: url(pink@2x.png);
-webkit-background-size: 200px 20px;
background-size: 200px 20px}
}
/* purple */
.icheckbox-purple,.iradio-purple{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(purple.png) no-repeat;border: none;cursor: pointer}
.icheckbox-purple,.icheckbox-purple.static:hover{background-position: 0 0}
.icheckbox-purple.hover,.icheckbox-purple:hover{background-position: -20px 0}
.icheckbox-purple.checked{background-position: -40px 0}
.icheckbox-purple.disabled{background-position: -60px 0;cursor: default}
.icheckbox-purple.checked.disabled{background-position: -80px 0}
.iradio-purple,.iradio-purple.static:hover{background-position: -100px 0}
.iradio-purple.hover,.iradio-purple:hover{background-position: -120px 0}
.iradio-purple.checked{background-position: -140px 0}
.iradio-purple.disabled{background-position: -160px 0;cursor: default}
.iradio-purple.checked.disabled{background-position: -180px 0}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-purple,.iradio-purple{background-image: url(purple@2x.png);
-webkit-background-size: 200px 20px;
background-size: 200px 20px}
}

@ -0,0 +1,9 @@
// iCheck v0.7, http://git.io/uhUPMA
(function(b){function m(a,b,d,c){var e=a[0],l=a.parent(),j=/disable|enable/.test(d)?"disabled":"checked",f="update"==d?{checked:e.checked,disabled:e.disabled}:e[j];if(/^check|disable/.test(d)&&!f)n(a,!0,l,j);else if(/uncheck|enable/.test(d)&&f)p(a,!0,l,j);else if("update"==d)for(j in f)f[j]?n(a,!1,l,j,c):p(a,!1,l,j,c);else b||(!0==d&&!e.disabled&&a.trigger("is.Clicked"),f?n(a,!0,l,j):p(a,!0,l,j))}function n(a,k,d,c,e){k&&(a[0][c]=!0);!0!==d.data(c)&&("checked"==c&&("radio"==a[0].type&&a[0].name)&&
b("input[name="+a[0].name+"]").each(function(){this!==a[0]&&b(this).data("icheck")&&p(b(this),!0,b(this).parent(),c)}),(k||e)&&a.trigger("is.Changed"),k&&a.trigger("is."+c.replace("di","Di").replace("ch","Ch")),d.data(c,!0).addClass(r(a,c)))}function p(a,b,d,c,e){var l="disabled"==c?"Enabled":"Unchecked";b&&(a[0][c]=!1);!1!==d.data(c)&&((b||e)&&a.trigger("is.Changed"),b&&a.trigger("is."+l),d.data(c,!1).removeClass(r(a,c)))}function u(a,k){if(a.data("icheck")){var d=a[0].id,c=b("label[for="+d+"]");
a.parent().html(a.attr("style",a.data("icheck").style||"").trigger(k||""));a.removeData("icheck").unbind(".df").unwrap();d&&c.length&&c.unbind(".df")}}function r(a,b){if(a.data("icheck"))return a.data("icheck").options[b+"Class"]}b.fn.iCheck=function(a){if(/^(check|uncheck|disable|enable|update|destroy)$/.test(a))return this.each(function(){/destroy/.test(a)?u(b(this),"is.Destroyed"):m(b(this),!0,a)});if("object"==typeof a||!a){var k=navigator.userAgent,d=b.extend({},{checkboxClass:"icheckbox",radioClass:"iradio",
checkedClass:"checked",disabledClass:"disabled",hoverClass:"hover",focusClass:"focus",activeClass:"active",labelHover:!0,labelHoverClass:"hover"},a),c=/^(checkbox|radio)$/.test(d.handle)?":"+d.handle:":checkbox, :radio",e=(""+d.increaseArea).replace("%","")|0;-50>e&&(e=-50);return this.each(function(){(b(this).is(c)?b(this):b(this).find(c)).each(function(){u(b(this));var a=this,c=a.id,f={position:"absolute",top:-e+"%",left:-e+"%",display:"block",width:100+2*e+"%",height:100+2*e+"%",margin:0,padding:0,
background:"#fff",border:0,opacity:0},r=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini/i.test(k)?{position:"absolute",visibility:"hidden"}:e|0?f:{position:"absolute",opacity:0},w="checkbox"==a.type?d.checkboxClass:d.radioClass,h=b(this).data("icheck",{style:b(this).attr("style"),options:d}).css(r),q=b("label[for="+c+"]"),g=h.wrap('<div class="'+w+'"/>').trigger("is.Created").parent().append(d.insert),f=b("<ins/>").css(f).appendTo(g).click(function(){h.click();m(h,!1,!0)}),s=d.hoverClass,
t=d.labelHoverClass,v;!0==d.cursor&&f.css("cursor","pointer");!0==d.inheritClass&&g.addClass(a.className);!0==d.inheritID&&c&&g.attr("id","icheck-"+c);"static"==g.css("position")&&g.css("position","relative");m(h,!0,"update");c&&q.length&&q.bind("click.df mouseenter.df mouseleave.df touchbegin.df touchend.df",function(c){var e=c.type,f=b(this);"click"==e?(c.preventDefault(),h.click(),m(h,!1,!0)):!0==d.labelHover&&!a.disabled&&(/mouseenter|touchbegin/.test(e)?(g.addClass(s),f.addClass(t)):(g.removeClass(s),
f.removeClass(t)))});h.bind("focus.df blur.df keyup.df keydown.df keypress.df",function(c){var b=c.type,e=c.keyCode||c.charCode||c.which;c=/MSIE [5-8]/.test(k)?"keyup"==b&&"keypress"!==v:"keyup"==b;e="keypress"==b&&32==e;/focus|blur/.test(b)?"focus"==b?g.addClass(d.focusClass):g.removeClass(d.focusClass):"radio"==a.type?(c?m(h,!0,"update",!0):e&&!a.checked&&n(h,!1,g,"checked",!0),v=b):"checkbox"==a.type&&e&&(a.checked?p(h,!1,g,"checked",!0):n(h,!1,g,"checked",!0))});f.bind("mousedown mouseup mouseout mouseenter mouseleave touchbegin touchend",
function(b){b=b.type;var e=/mousedown|mouseup|mouseout/.test(b)?d.activeClass:s;a.disabled||(/mousedown|mouseenter|touchbegin/.test(b)?g.addClass(e):g.removeClass(e),c&&(q.length&&!0==d.labelHover&&e==s)&&(/mouseleave|touchend/.test(b)?q.removeClass(t):q.addClass(t)))})})})}return this}})(jQuery);

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@ -0,0 +1,109 @@
/* Demo Note: This demo uses a FileProgress class that handles the UI for displaying the file name and percent complete.
The FileProgress class is not part of SWFUpload.
*/
/* **********************
Event Handlers
These are my custom event handlers to make my
web application behave the way I went when SWFUpload
completes different tasks. These aren't part of the SWFUpload
package. They are part of my application. Without these none
of the actions SWFUpload makes will show up in my application.
********************** */
function preLoad() {
if (!this.support.loading) {
alert("你需要安装Flash Player 9.028或者更高版本,才能使用上传功能。");
return false;
}
}
function loadFailed() {
alert("装在上传组件失败,请重新刷新页面重试。");
}
function fileQueued(file) {
try {
if(this.customSettings.tdFilesQueued != undefined) {
this.customSettings.tdFilesQueued.innerHTML = this.getStats().files_queued;
}
} catch (ex) {
this.debug(ex);
}
}
function fileDialogComplete() {
this.startUpload();
}
function uploadStart(file) {
try {
if(this.customSettings.progressCount != undefined) {
this.customSettings.progressCount = 0;
}
updateDisplay.call(this, file);
}
catch (ex) {
this.debug(ex);
}
}
function uploadProgress(file, bytesLoaded, bytesTotal) {
try {
if(this.customSettings.progressCount != undefined) {
this.customSettings.progressCount++;
}
updateDisplay.call(this, file);
} catch (ex) {
this.debug(ex);
}
}
function uploadSuccess(file, serverData) {
try {
updateDisplay.call(this, file);
} catch (ex) {
this.debug(ex);
}
}
function uploadComplete(file) {
if(this.customSettings.tdFilesQueued != undefined) {
this.customSettings.tdFilesQueued.innerHTML = this.getStats().files_queued;
}
if(this.customSettings.tdFilesUploaded != undefined) {
this.customSettings.tdFilesUploaded.innerHTML = this.getStats().successful_uploads;
}
if(this.customSettings.tdErrors != undefined) {
this.customSettings.tdErrors.innerHTML = this.getStats().upload_errors;
}
}
function updateDisplay(file) {
if(this.customSettings.tdCurrentSpeed != undefined) {
this.customSettings.tdCurrentSpeed.innerHTML = SWFUpload.speed.formatBPS(file.currentSpeed);
}
if(this.customSettings.tdAverageSpeed != undefined) {
this.customSettings.tdAverageSpeed.innerHTML = SWFUpload.speed.formatBPS(file.averageSpeed);
}
if(this.customSettings.tdMovingAverageSpeed != undefined) {
this.customSettings.tdMovingAverageSpeed.innerHTML = SWFUpload.speed.formatBPS(file.movingAverageSpeed);
}
if(this.customSettings.tdTimeRemaining != undefined) {
this.customSettings.tdTimeRemaining.innerHTML = SWFUpload.speed.formatTime(file.timeRemaining);
}
if(this.customSettings.tdTimeElapsed != undefined) {
this.customSettings.tdTimeElapsed.innerHTML = SWFUpload.speed.formatTime(file.timeElapsed);
}
if(this.customSettings.tdPercentUploaded != undefined) {
this.customSettings.tdPercentUploaded.innerHTML = SWFUpload.speed.formatPercent(file.percentUploaded);
}
if(this.customSettings.tdSizeUploaded != undefined) {
this.customSettings.tdSizeUploaded.innerHTML = SWFUpload.speed.formatBytes(file.sizeUploaded);
}
if(this.customSettings.tdProgressEventCount != undefined) {
this.customSettings.tdProgressEventCount.innerHTML = this.customSettings.progressCount;
}
}

@ -0,0 +1,53 @@
/*
Cookie Plug-in
This plug in automatically gets all the cookies for this site and adds them to the post_params.
Cookies are loaded only on initialization. The refreshCookies function can be called to update the post_params.
The cookies will override any other post params with the same name.
*/
var SWFUpload;
if (typeof(SWFUpload) === "function") {
SWFUpload.prototype.initSettings = function (oldInitSettings) {
return function (userSettings) {
if (typeof(oldInitSettings) === "function") {
oldInitSettings.call(this, userSettings);
}
this.refreshCookies(false); // The false parameter must be sent since SWFUpload has not initialzed at this point
};
}(SWFUpload.prototype.initSettings);
// refreshes the post_params and updates SWFUpload. The sendToFlash parameters is optional and defaults to True
SWFUpload.prototype.refreshCookies = function (sendToFlash) {
if (sendToFlash === undefined) {
sendToFlash = true;
}
sendToFlash = !!sendToFlash;
// Get the post_params object
var postParams = this.settings.post_params;
// Get the cookies
var i, cookieArray = document.cookie.split(';'), caLength = cookieArray.length, c, eqIndex, name, value;
for (i = 0; i < caLength; i++) {
c = cookieArray[i];
// Left Trim spaces
while (c.charAt(0) === " ") {
c = c.substring(1, c.length);
}
eqIndex = c.indexOf("=");
if (eqIndex > 0) {
name = c.substring(0, eqIndex);
value = c.substring(eqIndex + 1);
postParams[name] = value;
}
}
if (sendToFlash) {
this.setPostParams(postParams);
}
};
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,96 @@
/*
Proxy Plug-in
Features:
Times an upload to see if it appear suspiciously fast which might indicate a proxy server or anti-virus suite intercepting the upload.
If the upload seems too fast an uploadError event is fired with PROXY error code after the final uploadProgress event.
Adds a SWFUpload setting allowing you to tweak the bytes/s for triggering the error:
proxy_detect_threshold : 256000
Adds an UPLOAD_ERROR entry called PROXY:
function uploadError(file, errorCode, message) {
if (errorCode === SWFUpload.UPLOAD_ERROR.PROXY) {
alert("You might have a proxy!");
}
}
*/
var SWFUpload;
if (typeof(SWFUpload) === "function") {
SWFUpload.proxyDetect = {};
SWFUpload.UPLOAD_ERROR.PROXY = -30300;
SWFUpload.prototype.initSettings = (function (oldInitSettings) {
return function (userSettings) {
if (typeof(oldInitSettings) === "function") {
oldInitSettings.call(this, userSettings);
}
this.ensureDefault = function (settingName, defaultValue) {
this.settings[settingName] = (userSettings[settingName] == undefined) ? defaultValue : userSettings[settingName];
};
// List used to keep the speed stats for the files we are tracking
this.proxyDetectFileStartTimes = {};
this.proxyDetectSettings = {};
this.ensureDefault("proxy_detect_threshold", 256000); // Default is 250 KB per second
this.proxyDetectSettings.user_upload_progress_handler = this.settings.upload_progress_handler;
this.proxyDetectSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
this.settings.upload_progress_handler = SWFUpload.proxyDetect.uploadProgressHandler;
this.settings.upload_complete_handler = SWFUpload.proxyDetect.uploadCompleteHandler;
delete this.ensureDefault;
};
}(SWFUpload.prototype.initSettings));
SWFUpload.proxyDetect.uploadProgressHandler = function (file, bytesComplete, bytesTotal) {
var ex1 = null, time, differenceMS, bps;
try {
if (typeof this.proxyDetectSettings.user_upload_progress_handler === "function") {
this.proxyDetectSettings.user_upload_progress_handler.call(this, file, bytesComplete, bytesTotal);
}
} catch (ex1) { }
if (bytesComplete === 0) {
this.proxyDetectFileStartTimes[file.ID] = new Date();
} else if (bytesComplete === bytesTotal) {
try {
// Calculate the Bps and decide if we should trigger the error
time = new Date();
differenceMS = time.getTime() - this.proxyDetectFileStartTimes[file.ID].getTime();
if (differenceMS === 0) {
differenceMS = 1;
}
bps = bytesTotal / (differenceMS * 1000);
if (bps > parseInt(this.settings.proxy_detect_threshold, 10)) {
this.queueEvent("upload_error_handler", [file, SWFUpload.UPLOAD_ERROR.PROXY, bps]);
}
} catch (ex) {
}
}
if (ex1 !== null) {
throw(ex1);
}
};
SWFUpload.proxyDetect.uploadCompleteHandler = function (file) {
try {
delete this.proxyDetectFileStartTimes[file.ID];
} catch (ex) {
}
if (typeof this.proxyDetectSettings.user_upload_progress_handler === "function") {
return this.proxyDetectSettings.user_upload_progress_handler.call(this, file);
}
};
}

@ -0,0 +1,98 @@
/*
Queue Plug-in
Features:
*Adds a cancelQueue() method for cancelling the entire queue.
*All queued files are uploaded when startUpload() is called.
*If false is returned from uploadComplete then the queue upload is stopped.
If false is not returned (strict comparison) then the queue upload is continued.
*Adds a QueueComplete event that is fired when all the queued files have finished uploading.
Set the event handler with the queue_complete_handler setting.
*/
var SWFUpload;
if (typeof(SWFUpload) === "function") {
SWFUpload.queue = {};
SWFUpload.prototype.initSettings = (function (oldInitSettings) {
return function (userSettings) {
if (typeof(oldInitSettings) === "function") {
oldInitSettings.call(this, userSettings);
}
this.queueSettings = {};
this.queueSettings.queue_cancelled_flag = false;
this.queueSettings.queue_upload_count = 0;
this.queueSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
this.queueSettings.user_upload_start_handler = this.settings.upload_start_handler;
this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler;
this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler;
this.settings.queue_complete_handler = userSettings.queue_complete_handler || null;
};
})(SWFUpload.prototype.initSettings);
SWFUpload.prototype.startUpload = function (fileID) {
this.queueSettings.queue_cancelled_flag = false;
this.callFlash("StartUpload", [fileID]);
};
SWFUpload.prototype.cancelQueue = function () {
this.queueSettings.queue_cancelled_flag = true;
this.stopUpload();
var stats = this.getStats();
while (stats.files_queued > 0) {
this.cancelUpload();
stats = this.getStats();
}
};
SWFUpload.queue.uploadStartHandler = function (file) {
var returnValue;
if (typeof(this.queueSettings.user_upload_start_handler) === "function") {
returnValue = this.queueSettings.user_upload_start_handler.call(this, file);
}
// To prevent upload a real "FALSE" value must be returned, otherwise default to a real "TRUE" value.
returnValue = (returnValue === false) ? false : true;
this.queueSettings.queue_cancelled_flag = !returnValue;
return returnValue;
};
SWFUpload.queue.uploadCompleteHandler = function (file) {
var user_upload_complete_handler = this.queueSettings.user_upload_complete_handler;
var continueUpload;
if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) {
this.queueSettings.queue_upload_count++;
}
if (typeof(user_upload_complete_handler) === "function") {
continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true;
} else if (file.filestatus === SWFUpload.FILE_STATUS.QUEUED) {
// If the file was stopped and re-queued don't restart the upload
continueUpload = false;
} else {
continueUpload = true;
}
if (continueUpload) {
var stats = this.getStats();
if (stats.files_queued > 0 && this.queueSettings.queue_cancelled_flag === false) {
this.startUpload();
} else if (this.queueSettings.queue_cancelled_flag === false) {
this.queueEvent("queue_complete_handler", [this.queueSettings.queue_upload_count]);
this.queueSettings.queue_upload_count = 0;
} else {
this.queueSettings.queue_cancelled_flag = false;
this.queueSettings.queue_upload_count = 0;
}
}
};
}

@ -0,0 +1,346 @@
/*
Speed Plug-in
Features:
*Adds several properties to the 'file' object indicated upload speed, time left, upload time, etc.
- currentSpeed -- String indicating the upload speed, bits per second
- averageSpeed -- Overall average upload speed, bits per second
- movingAverageSpeed -- Speed over averaged over the last several measurements, bits per second
- timeRemaining -- Estimated remaining upload time in seconds
- timeElapsed -- Number of seconds passed for this upload
- percentUploaded -- Percentage of the file uploaded (0 to 100)
- sizeUploaded -- Formatted size uploaded so far, bytes
*Adds setting 'moving_average_history_size' for defining the window size used to calculate the moving average speed.
*Adds several Formatting functions for formatting that values provided on the file object.
- SWFUpload.speed.formatBPS(bps) -- outputs string formatted in the best units (Gbps, Mbps, Kbps, bps)
- SWFUpload.speed.formatTime(seconds) -- outputs string formatted in the best units (x Hr y M z S)
- SWFUpload.speed.formatSize(bytes) -- outputs string formatted in the best units (w GB x MB y KB z B )
- SWFUpload.speed.formatPercent(percent) -- outputs string formatted with a percent sign (x.xx %)
- SWFUpload.speed.formatUnits(baseNumber, divisionArray, unitLabelArray, fractionalBoolean)
- Formats a number using the division array to determine how to apply the labels in the Label Array
- factionalBoolean indicates whether the number should be returned as a single fractional number with a unit (speed)
or as several numbers labeled with units (time)
*/
var SWFUpload;
if (typeof(SWFUpload) === "function") {
SWFUpload.speed = {};
SWFUpload.prototype.initSettings = (function (oldInitSettings) {
return function (userSettings) {
if (typeof(oldInitSettings) === "function") {
oldInitSettings.call(this, userSettings);
}
this.ensureDefault = function (settingName, defaultValue) {
this.settings[settingName] = (userSettings[settingName] == undefined) ? defaultValue : userSettings[settingName];
};
// List used to keep the speed stats for the files we are tracking
this.fileSpeedStats = {};
this.speedSettings = {};
this.ensureDefault("moving_average_history_size", "10");
this.speedSettings.user_file_queued_handler = this.settings.file_queued_handler;
this.speedSettings.user_file_queue_error_handler = this.settings.file_queue_error_handler;
this.speedSettings.user_upload_start_handler = this.settings.upload_start_handler;
this.speedSettings.user_upload_error_handler = this.settings.upload_error_handler;
this.speedSettings.user_upload_progress_handler = this.settings.upload_progress_handler;
this.speedSettings.user_upload_success_handler = this.settings.upload_success_handler;
this.speedSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
this.settings.file_queued_handler = SWFUpload.speed.fileQueuedHandler;
this.settings.file_queue_error_handler = SWFUpload.speed.fileQueueErrorHandler;
this.settings.upload_start_handler = SWFUpload.speed.uploadStartHandler;
this.settings.upload_error_handler = SWFUpload.speed.uploadErrorHandler;
this.settings.upload_progress_handler = SWFUpload.speed.uploadProgressHandler;
this.settings.upload_success_handler = SWFUpload.speed.uploadSuccessHandler;
this.settings.upload_complete_handler = SWFUpload.speed.uploadCompleteHandler;
delete this.ensureDefault;
};
})(SWFUpload.prototype.initSettings);
SWFUpload.speed.fileQueuedHandler = function (file) {
if (typeof this.speedSettings.user_file_queued_handler === "function") {
file = SWFUpload.speed.extendFile(file);
return this.speedSettings.user_file_queued_handler.call(this, file);
}
};
SWFUpload.speed.fileQueueErrorHandler = function (file, errorCode, message) {
if (typeof this.speedSettings.user_file_queue_error_handler === "function") {
file = SWFUpload.speed.extendFile(file);
return this.speedSettings.user_file_queue_error_handler.call(this, file, errorCode, message);
}
};
SWFUpload.speed.uploadStartHandler = function (file) {
if (typeof this.speedSettings.user_upload_start_handler === "function") {
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
return this.speedSettings.user_upload_start_handler.call(this, file);
}
};
SWFUpload.speed.uploadErrorHandler = function (file, errorCode, message) {
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
SWFUpload.speed.removeTracking(file, this.fileSpeedStats);
if (typeof this.speedSettings.user_upload_error_handler === "function") {
return this.speedSettings.user_upload_error_handler.call(this, file, errorCode, message);
}
};
SWFUpload.speed.uploadProgressHandler = function (file, bytesComplete, bytesTotal) {
this.updateTracking(file, bytesComplete);
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
if (typeof this.speedSettings.user_upload_progress_handler === "function") {
return this.speedSettings.user_upload_progress_handler.call(this, file, bytesComplete, bytesTotal);
}
};
SWFUpload.speed.uploadSuccessHandler = function (file, serverData) {
if (typeof this.speedSettings.user_upload_success_handler === "function") {
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
return this.speedSettings.user_upload_success_handler.call(this, file, serverData);
}
};
SWFUpload.speed.uploadCompleteHandler = function (file) {
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
SWFUpload.speed.removeTracking(file, this.fileSpeedStats);
if (typeof this.speedSettings.user_upload_complete_handler === "function") {
return this.speedSettings.user_upload_complete_handler.call(this, file);
}
};
// Private: extends the file object with the speed plugin values
SWFUpload.speed.extendFile = function (file, trackingList) {
var tracking;
if (!file) {
return file;
}
if (trackingList) {
tracking = trackingList[file.id];
}
if (tracking) {
file.currentSpeed = tracking.currentSpeed;
file.averageSpeed = tracking.averageSpeed;
file.movingAverageSpeed = tracking.movingAverageSpeed;
file.timeRemaining = tracking.timeRemaining;
file.timeElapsed = tracking.timeElapsed;
file.percentUploaded = tracking.percentUploaded;
file.sizeUploaded = tracking.bytesUploaded;
} else {
file.currentSpeed = 0;
file.averageSpeed = 0;
file.movingAverageSpeed = 0;
file.timeRemaining = 0;
file.timeElapsed = 0;
file.percentUploaded = 0;
file.sizeUploaded = 0;
}
return file;
};
// Private: Updates the speed tracking object, or creates it if necessary
SWFUpload.prototype.updateTracking = function (file, bytesUploaded) {
var tracking = this.fileSpeedStats[file.id];
if (!tracking) {
this.fileSpeedStats[file.id] = tracking = {};
}
// Sanity check inputs
bytesUploaded = bytesUploaded || tracking.bytesUploaded || 0;
if (bytesUploaded < 0) {
bytesUploaded = 0;
}
if (bytesUploaded > file.size) {
bytesUploaded = file.size;
}
var tickTime = (new Date()).getTime();
if (!tracking.startTime) {
tracking.startTime = (new Date()).getTime();
tracking.lastTime = tracking.startTime;
tracking.currentSpeed = 0;
tracking.averageSpeed = 0;
tracking.movingAverageSpeed = 0;
tracking.movingAverageHistory = [];
tracking.timeRemaining = 0;
tracking.timeElapsed = 0;
tracking.percentUploaded = bytesUploaded / file.size;
tracking.bytesUploaded = bytesUploaded;
} else if (tracking.startTime > tickTime) {
this.debug("When backwards in time");
} else {
// Get time and deltas
var now = (new Date()).getTime();
var lastTime = tracking.lastTime;
var deltaTime = now - lastTime;
var deltaBytes = bytesUploaded - tracking.bytesUploaded;
if (deltaBytes === 0 || deltaTime === 0) {
return tracking;
}
// Update tracking object
tracking.lastTime = now;
tracking.bytesUploaded = bytesUploaded;
// Calculate speeds
tracking.currentSpeed = (deltaBytes * 8 ) / (deltaTime / 1000);
tracking.averageSpeed = (tracking.bytesUploaded * 8) / ((now - tracking.startTime) / 1000);
// Calculate moving average
tracking.movingAverageHistory.push(tracking.currentSpeed);
if (tracking.movingAverageHistory.length > this.settings.moving_average_history_size) {
tracking.movingAverageHistory.shift();
}
tracking.movingAverageSpeed = SWFUpload.speed.calculateMovingAverage(tracking.movingAverageHistory);
// Update times
tracking.timeRemaining = (file.size - tracking.bytesUploaded) * 8 / tracking.movingAverageSpeed;
tracking.timeElapsed = (now - tracking.startTime) / 1000;
// Update percent
tracking.percentUploaded = (tracking.bytesUploaded / file.size * 100);
}
return tracking;
};
SWFUpload.speed.removeTracking = function (file, trackingList) {
try {
trackingList[file.id] = null;
delete trackingList[file.id];
} catch (ex) {
}
};
SWFUpload.speed.formatUnits = function (baseNumber, unitDivisors, unitLabels, singleFractional) {
var i, unit, unitDivisor, unitLabel;
if (baseNumber === 0) {
return "0 " + unitLabels[unitLabels.length - 1];
}
if (singleFractional) {
unit = baseNumber;
unitLabel = unitLabels.length >= unitDivisors.length ? unitLabels[unitDivisors.length - 1] : "";
for (i = 0; i < unitDivisors.length; i++) {
if (baseNumber >= unitDivisors[i]) {
unit = (baseNumber / unitDivisors[i]).toFixed(2);
unitLabel = unitLabels.length >= i ? " " + unitLabels[i] : "";
break;
}
}
return unit + unitLabel;
} else {
var formattedStrings = [];
var remainder = baseNumber;
for (i = 0; i < unitDivisors.length; i++) {
unitDivisor = unitDivisors[i];
unitLabel = unitLabels.length > i ? " " + unitLabels[i] : "";
unit = remainder / unitDivisor;
if (i < unitDivisors.length -1) {
unit = Math.floor(unit);
} else {
unit = unit.toFixed(2);
}
if (unit > 0) {
remainder = remainder % unitDivisor;
formattedStrings.push(unit + unitLabel);
}
}
return formattedStrings.join(" ");
}
};
SWFUpload.speed.formatBPS = function (baseNumber) {
var bpsUnits = [1073741824, 1048576, 1024, 1], bpsUnitLabels = ["Gbps", "Mbps", "Kbps", "bps"];
return SWFUpload.speed.formatUnits(baseNumber, bpsUnits, bpsUnitLabels, true);
};
SWFUpload.speed.formatTime = function (baseNumber) {
var timeUnits = [86400, 3600, 60, 1], timeUnitLabels = ["d", "h", "m", "s"];
return SWFUpload.speed.formatUnits(baseNumber, timeUnits, timeUnitLabels, false);
};
SWFUpload.speed.formatBytes = function (baseNumber) {
var sizeUnits = [1073741824, 1048576, 1024, 1], sizeUnitLabels = ["GB", "MB", "KB", "bytes"];
return SWFUpload.speed.formatUnits(baseNumber, sizeUnits, sizeUnitLabels, true);
};
SWFUpload.speed.formatPercent = function (baseNumber) {
return baseNumber.toFixed(2) + "%";
};
SWFUpload.speed.calculateMovingAverage = function (history) {
var vals = [], size, sum = 0.0, mean = 0.0, varianceTemp = 0.0, variance = 0.0, standardDev = 0.0;
var i;
var mSum = 0, mCount = 0;
size = history.length;
// Check for sufficient data
if (size >= 8) {
// Clone the array and Calculate sum of the values
for (i = 0; i < size; i++) {
vals[i] = history[i];
sum += vals[i];
}
mean = sum / size;
// Calculate variance for the set
for (i = 0; i < size; i++) {
varianceTemp += Math.pow((vals[i] - mean), 2);
}
variance = varianceTemp / size;
standardDev = Math.sqrt(variance);
//Standardize the Data
for (i = 0; i < size; i++) {
vals[i] = (vals[i] - mean) / standardDev;
}
// Calculate the average excluding outliers
var deviationRange = 2.0;
for (i = 0; i < size; i++) {
if (vals[i] <= deviationRange && vals[i] >= -deviationRange) {
mCount++;
mSum += history[i];
}
}
} else {
// Calculate the average (not enough data points to remove outliers)
mCount = size;
for (i = 0; i < size; i++) {
mSum += history[i];
}
}
return mSum / mCount;
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

@ -0,0 +1,271 @@
<%
'Februari 2014 - Version 1.17 by Gerrit van Kuipers
Class AspJSON
Public data
Private p_JSONstring
private aj_in_string, aj_in_escape, aj_i_tmp, aj_char_tmp, aj_s_tmp, aj_line_tmp, aj_line, aj_lines, aj_currentlevel, aj_currentkey, aj_currentvalue, aj_newlabel, aj_XmlHttp, aj_RegExp, aj_colonfound
Private Sub Class_Initialize()
Set data = Collection()
Set aj_RegExp = new regexp
aj_RegExp.Pattern = "\s{0,}(\S{1}[\s,\S]*\S{1})\s{0,}"
aj_RegExp.Global = False
aj_RegExp.IgnoreCase = True
aj_RegExp.Multiline = True
End Sub
Private Sub Class_Terminate()
Set data = Nothing
Set aj_RegExp = Nothing
End Sub
Public Sub loadJSON(inputsource)
inputsource = aj_MultilineTrim(inputsource)
If Len(inputsource) = 0 Then Err.Raise 1, "loadJSON Error", "No data to load."
select case Left(inputsource, 1)
case "{", "["
case else
Set aj_XmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
aj_XmlHttp.open "GET", inputsource, False
aj_XmlHttp.setRequestHeader "Content-Type", "text/json"
aj_XmlHttp.setRequestHeader "CharSet", "UTF-8"
aj_XmlHttp.Send
inputsource = aj_XmlHttp.responseText
set aj_XmlHttp = Nothing
end select
p_JSONstring = CleanUpJSONstring(inputsource)
aj_lines = Split(p_JSONstring, Chr(13) & Chr(10))
Dim level(99)
aj_currentlevel = 1
Set level(aj_currentlevel) = data
For Each aj_line In aj_lines
aj_currentkey = ""
aj_currentvalue = ""
If Instr(aj_line, ":") > 0 Then
aj_in_string = False
aj_in_escape = False
aj_colonfound = False
For aj_i_tmp = 1 To Len(aj_line)
If aj_in_escape Then
aj_in_escape = False
Else
Select Case Mid(aj_line, aj_i_tmp, 1)
Case """"
aj_in_string = Not aj_in_string
Case ":"
If Not aj_in_escape And Not aj_in_string Then
aj_currentkey = Left(aj_line, aj_i_tmp - 1)
aj_currentvalue = Mid(aj_line, aj_i_tmp + 1)
aj_colonfound = True
Exit For
End If
Case "\"
aj_in_escape = True
End Select
End If
Next
if aj_colonfound then
aj_currentkey = aj_Strip(aj_JSONDecode(aj_currentkey), """")
If Not level(aj_currentlevel).exists(aj_currentkey) Then level(aj_currentlevel).Add aj_currentkey, ""
end if
End If
If right(aj_line,1) = "{" Or right(aj_line,1) = "[" Then
If Len(aj_currentkey) = 0 Then aj_currentkey = level(aj_currentlevel).Count
Set level(aj_currentlevel).Item(aj_currentkey) = Collection()
Set level(aj_currentlevel + 1) = level(aj_currentlevel).Item(aj_currentkey)
aj_currentlevel = aj_currentlevel + 1
aj_currentkey = ""
ElseIf right(aj_line,1) = "}" Or right(aj_line,1) = "]" or right(aj_line,2) = "}," Or right(aj_line,2) = "]," Then
aj_currentlevel = aj_currentlevel - 1
ElseIf Len(Trim(aj_line)) > 0 Then
if Len(aj_currentvalue) = 0 Then aj_currentvalue = aj_line
aj_currentvalue = getJSONValue(aj_currentvalue)
If Len(aj_currentkey) = 0 Then aj_currentkey = level(aj_currentlevel).Count
level(aj_currentlevel).Item(aj_currentkey) = aj_currentvalue
End If
Next
End Sub
Public Function Collection()
set Collection = Server.CreateObject("Scripting.Dictionary")
End Function
Public Function AddToCollection(dictobj)
if TypeName(dictobj) <> "Dictionary" then Err.Raise 1, "AddToCollection Error", "Not a collection."
aj_newlabel = dictobj.Count
dictobj.Add aj_newlabel, Collection()
set AddToCollection = dictobj.item(aj_newlabel)
end function
Private Function CleanUpJSONstring(aj_originalstring)
aj_originalstring = Replace(aj_originalstring, Chr(13) & Chr(10), "")
aj_originalstring = Mid(aj_originalstring, 2, Len(aj_originalstring) - 2)
aj_in_string = False : aj_in_escape = False : aj_s_tmp = ""
For aj_i_tmp = 1 To Len(aj_originalstring)
aj_char_tmp = Mid(aj_originalstring, aj_i_tmp, 1)
If aj_in_escape Then
aj_in_escape = False
aj_s_tmp = aj_s_tmp & aj_char_tmp
Else
Select Case aj_char_tmp
Case "\" : aj_s_tmp = aj_s_tmp & aj_char_tmp : aj_in_escape = True
Case """" : aj_s_tmp = aj_s_tmp & aj_char_tmp : aj_in_string = Not aj_in_string
Case "{", "["
aj_s_tmp = aj_s_tmp & aj_char_tmp & aj_InlineIf(aj_in_string, "", Chr(13) & Chr(10))
Case "}", "]"
aj_s_tmp = aj_s_tmp & aj_InlineIf(aj_in_string, "", Chr(13) & Chr(10)) & aj_char_tmp
Case "," : aj_s_tmp = aj_s_tmp & aj_char_tmp & aj_InlineIf(aj_in_string, "", Chr(13) & Chr(10))
Case Else : aj_s_tmp = aj_s_tmp & aj_char_tmp
End Select
End If
Next
CleanUpJSONstring = ""
aj_s_tmp = split(aj_s_tmp, Chr(13) & Chr(10))
For Each aj_line_tmp In aj_s_tmp
aj_line_tmp = replace(replace(aj_line_tmp, chr(10), ""), chr(13), "")
CleanUpJSONstring = CleanUpJSONstring & aj_Trim(aj_line_tmp) & Chr(13) & Chr(10)
Next
End Function
Private Function getJSONValue(ByVal val)
val = Trim(val)
If Left(val,1) = ":" Then val = Mid(val, 2)
If Right(val,1) = "," Then val = Left(val, Len(val) - 1)
val = Trim(val)
Select Case val
Case "true" : getJSONValue = True
Case "false" : getJSONValue = False
Case "null" : getJSONValue = Null
Case Else
If (Instr(val, """") = 0) Then
If IsNumeric(val) Then
getJSONValue = CDbl(val)
Else
getJSONValue = val
End If
Else
If Left(val,1) = """" Then val = Mid(val, 2)
If Right(val,1) = """" Then val = Left(val, Len(val) - 1)
getJSONValue = aj_JSONDecode(Trim(val))
End If
End Select
End Function
Private JSONoutput_level
Public Function JSONoutput()
dim wrap_dicttype, aj_label
JSONoutput_level = 1
wrap_dicttype = "[]"
For Each aj_label In data
If Not aj_IsInt(aj_label) Then wrap_dicttype = "{}"
Next
JSONoutput = Left(wrap_dicttype, 1) & Chr(13) & Chr(10) & GetDict(data) & Right(wrap_dicttype, 1)
End Function
Public Function PrintJson
Response.AddHeader "Content-Type", "text/plain"
If IsEmpty(Request.QueryString("callback")) Then
Response.Write JSONoutput()
Else
Response.Write Request.QueryString("callback") & "(" & JSONoutput() & ")"
End If
End Function
Private Function GetDict(objDict)
dim aj_item, aj_keyvals, aj_label, aj_dicttype
For Each aj_item In objDict
Select Case TypeName(objDict.Item(aj_item))
Case "Dictionary"
GetDict = GetDict & Space(JSONoutput_level * 4)
aj_dicttype = "[]"
For Each aj_label In objDict.Item(aj_item).Keys
If Not aj_IsInt(aj_label) Then aj_dicttype = "{}"
Next
If aj_IsInt(aj_item) Then
GetDict = GetDict & (Left(aj_dicttype,1) & Chr(13) & Chr(10))
Else
GetDict = GetDict & ("""" & aj_JSONEncode(aj_item) & """" & ": " & Left(aj_dicttype,1) & Chr(13) & Chr(10))
End If
JSONoutput_level = JSONoutput_level + 1
aj_keyvals = objDict.Keys
GetDict = GetDict & (GetSubDict(objDict.Item(aj_item)) & Space(JSONoutput_level * 4) & Right(aj_dicttype,1) & aj_InlineIf(aj_item = aj_keyvals(objDict.Count - 1),"" , ",") & Chr(13) & Chr(10))
Case Else
aj_keyvals = objDict.Keys
GetDict = GetDict & (Space(JSONoutput_level * 4) & aj_InlineIf(aj_IsInt(aj_item), "", """" & aj_JSONEncode(aj_item) & """: ") & WriteValue(objDict.Item(aj_item)) & aj_InlineIf(aj_item = aj_keyvals(objDict.Count - 1),"" , ",") & Chr(13) & Chr(10))
End Select
Next
End Function
Private Function aj_IsInt(val)
aj_IsInt = (TypeName(val) = "Integer" Or TypeName(val) = "Long")
End Function
Private Function GetSubDict(objSubDict)
GetSubDict = GetDict(objSubDict)
JSONoutput_level= JSONoutput_level -1
End Function
Private Function WriteValue(ByVal val)
Select Case TypeName(val)
Case "Double", "Integer", "Long": WriteValue = val
Case "Null" : WriteValue = "null"
Case "Boolean" : WriteValue = aj_InlineIf(val, "true", "false")
Case Else : WriteValue = """" & aj_JSONEncode(val) & """"
End Select
End Function
Private Function aj_JSONEncode(ByVal val)
val = Replace(val, "\", "\\")
val = Replace(val, """", "\""")
'val = Replace(val, "/", "\/")
val = Replace(val, Chr(8), "\b")
val = Replace(val, Chr(12), "\f")
val = Replace(val, Chr(10), "\n")
val = Replace(val, Chr(13), "\r")
val = Replace(val, Chr(9), "\t")
aj_JSONEncode = Trim(val)
End Function
Private Function aj_JSONDecode(ByVal val)
val = Replace(val, "\""", """")
val = Replace(val, "\\", "\")
val = Replace(val, "\/", "/")
val = Replace(val, "\b", Chr(8))
val = Replace(val, "\f", Chr(12))
val = Replace(val, "\n", Chr(10))
val = Replace(val, "\r", Chr(13))
val = Replace(val, "\t", Chr(9))
aj_JSONDecode = Trim(val)
End Function
Private Function aj_InlineIf(condition, returntrue, returnfalse)
If condition Then aj_InlineIf = returntrue Else aj_InlineIf = returnfalse
End Function
Private Function aj_Strip(ByVal val, stripper)
If Left(val, 1) = stripper Then val = Mid(val, 2)
If Right(val, 1) = stripper Then val = Left(val, Len(val) - 1)
aj_Strip = val
End Function
Private Function aj_MultilineTrim(TextData)
aj_MultilineTrim = aj_RegExp.Replace(TextData, "$1")
End Function
private function aj_Trim(val)
aj_Trim = Trim(val)
Do While Left(aj_Trim, 1) = Chr(9) : aj_Trim = Mid(aj_Trim, 2) : Loop
Do While Right(aj_Trim, 1) = Chr(9) : aj_Trim = Left(aj_Trim, Len(aj_Trim) - 1) : Loop
aj_Trim = Trim(aj_Trim)
end function
End Class
%>

@ -0,0 +1,138 @@
<%
' Power by Techird
' Processor Usage:
' Set p = new MultiformProcessor
' Set formValues = p.Process()
' filename = formValues.Item("filename")
' Set stream = formValues.Item("file1") // the name of the file input
' stream.SaveToFile "upload/" & filename
' stream.Close
Class MultiformProcessor
Private adTypeBinary
Private adTypeText
Private adModeReadWrite
Private binCtLf
Private binCtLf2
private Sub Class_Initialize()
adTypeBinary = 1
adTypeText = 2
adModeReadWrite = 3
binCtLf = ChrB(13) & ChrB(10)
binCtLf2 = binCtLf & binCtLf
End Sub
Private Function OpenStream( optype )
Set stream = Server.CreateObject("ADODB.Stream")
stream.Type = optype
stream.Mode = adModeReadWrite
stream.Open
Set OpenStream = stream
End Function
Private Function CopyStreamPart( stream, pBgn, pEnd )
Dim iStream, oStream
Set iStream = stream
Set oStream = OpenStream( adTypeBinary )
iStream.Position = pBgn
iStream.CopyTo oStream, pEnd - pBgn
Set CopyStreamPart = oStream
End Function
Private Function GetString( stream, pBgn, pEnd )
Dim iStream, oStream
Set iStream = stream
Set oStream = OpenStream( adTypeBinary )
iStream.Position = pBgn
iStream.CopyTo oStream, pEnd - pBgn
oStream.Position = 0
oStream.Type = adTypeText
oStream.Charset = GetCharset
GetString = oStream.ReadText
oStream.Close
End Function
Private Function GetCharset()
If Charset = "" Then
GetCharset = "utf-8"
Else
GetCharset = Charset
End If
End Function
'See RFC 2388
'http://www.ietf.org/rfc/rfc2388.txt
public Function Process()
Dim formBytes, bLen, pBgn, pEnd, header, stream
Dim varPtn, filePtn, formValues, key, field
formBytes = Request.BinaryRead( Request.TotalBytes )
Set stream = OpenStream( adTypeBinary )
stream.Write formBytes
Set varPtn = new RegExp
varPtn.Pattern = "(\w+?)=""(.+?)"""
varPtn.Global = True
Set filePtn = new RegExp
filePtn.Pattern = "filename="
Set formValues = Server.CreateObject("Scripting.Dictionary")
'Find boundary
bLen = InStrB( 1, formBytes, binCtLf ) - 1
boundary = LeftB( formBytes, bLen )
'Init begin pointer to byte start
pBgn = 1
Do
'Find begin pointer and end pointer for block header
pBgn = pBgn + bLen + LenB( binCtLf ) - 1
pEnd = InStrB( pBgn, formBytes, binCtLf2 )
'If next block not found, means all blocks processed
If pEnd = 0 Then
Exit Do 'Load Finished
End If
'Decode the headerf
header = GetString( stream, pBgn, pEnd )
'Test if the block is a file block
isFileBlock = filePtn.Test( header )
'Find begin pointer and end pointer for block content
pBgn = pEnd + LenB(binCtLf2) - 1
pEnd = InStrB(pBgn, formBytes, boundary) - LenB( binCtLf ) - 1
'Extract field values from header, which like key = "filed"
Set matches = varPtn.Execute( header )
For Each match In matches
key = match.SubMatches(0)
field = match.SubMatches(1)
'filename as a field
If key = "filename" Then
formValues.Add key, field
'name specified fields
ElseIf key = "name" Then
If isFileBlock Then
'Resolve content as stream for fileblock
formValues.Add field, CopyStreamPart(stream, pBgn, pEnd)
Else
'Resolve content as string for non-fileblock
formValues.Add field, GetString(stream, pBgn, pEnd)
End If
End If
Next
'Move over the begin pointer to next block
pBgn = pEnd + LenB( binCtLf ) + 1
Loop
stream.Close
Set Process = formValues
End Function
End Class
%>

@ -0,0 +1,81 @@
<%
Class PathFormatter
Public Function Format( ByVal pathFormat, ByVal filename )
Dim ext, name
If IsEmpty( format ) Then
format = "{yyyy}{mm}{dd}{hh}{ii}{ss}{rand:6}"
End If
Set invalidPattern = new RegExp
invalidPattern.Pattern = "[\\\/\:\*\?\<\>\|""]"
invalidPattern.Global = true
filename = invalidPattern.Replace( filename, "" )
ext = GetExt( filename )
name = GetNameWithoutExt( filename )
pathFormat = Replace( pathFormat, "{filename}", name )
pathFormat = Replace( pathFormat, "{time}", TimeStamp() )
pathFormat = Replace( pathFormat, "{yyyy}", Year(Now) )
pathFormat = Replace( pathFormat, "{yy}", Year(Now) Mod 100 )
pathFormat = Replace( pathFormat, "{mm}", LeadZero( Month(Now) ) )
pathFormat = Replace( pathFormat, "{dd}", LeadZero( Day(Now) ) )
pathFormat = Replace( pathFormat, "{hh}", LeadZero( Hour(Now) ) )
pathFormat = Replace( pathFormat, "{ii}", LeadZero( Minute(Now) ) )
pathFormat = Replace( pathFormat, "{ss}", LeadZero( Second(Now) ) )
Set randPattern = new RegExp
randPattern.Pattern = "{rand(\:?)(\d+)}"
Set matches = randPattern.Execute(pathFormat)
If matches.Count Then
Set match = matches(0)
digit = 6
If match.SubMatches.Count > 1 Then
digit = 0 + match.SubMatches(1)
End If
min = 1
Do While digit > 0
min = min * 10
digit = digit - 1
Loop
max = min * 10
pathFormat = randPattern.Replace( pathFormat, Rand( min, max ) )
End If
Format = pathFormat + ext
End Function
Private Function GetExt( file )
GetExt = Right( file, Len(file) - InStrRev(file, ".") + 1 )
End Function
Private Function GetNameWithoutExt( file )
GetNameWithoutExt = Left( file, InStrRev(file, ".") - 1 )
End Function
Private Function TimeStamp()
TimeStamp = DateDiff("s", "1970-1-1 8:00:00", Now())
End Function
Private Function Rand( min, max )
Randomize
Rand = Int( (max - min + 1) * Rnd + min )
End Function
Private Function GetFormatedDate()
Dim yyyy, mm, dd
yyyy = Year(Date)
mm = LeadZero(Month(Date))
dd = LeadZero(Day(Date))
GetFormatedDate = yyyy & mm & dd
End Function
Private Function LeadZero( number )
If number < 10 Then
LeadZero = "0" & number
Else
LeadZero = number
End If
End Function
End Class
%>

@ -0,0 +1,115 @@
# UEditor ASP 支持说明
应广大用户要求UEditor 团队在原本支持的 PHP、Java 和 .Net 的后台的基础上,推出了 ASP 后台的支持。
## 支持版本 ##
支持 UEditor 1.2.6+ 的版本
## 支持功能 ##
支持所有其他后台已支持的功能,包括:
1. 图片上传
2. 远程图片转存
3. 图片管理
4. 涂鸦上传(包括背景)
5. Word 图片转存
6. 截图上传
7. 文件上传
## 部署指南 ##
Classic ASP 一般在 IIS 上运行。其它 ASP 服务器不介绍部署方式,请自行研究。
### 配置 ###
对于 v1.4.0 之前的版本,需要修改 `ueditor.config.js`。最简单的方法,就是把文件中的 php 都替换成 asp。要修改的配置包括
```javascript
{
imageUrl:URL+"asp/imageUp.asp"
,imagePath:URL + "asp/"
,scrawlUrl:URL+"asp/scrawlUp.asp"
,scrawlPath:URL+"asp/"
,fileUrl:URL+"asp/fileUp.asp"
,filePath:URL + "asp/"
,catcherUrl:URL +"asp/getRemoteImage.asp"
,catcherPath:URL + "asp/"
,imageManagerUrl:URL + "asp/imageManager.asp"
,imageManagerPath:URL + "asp/"
,snapscreenServerUrl: URL +"asp/imageUp.asp"
,snapscreenPath: URL + "asp/"
,wordImageUrl:URL + "asp/imageUp.asp"
,wordImagePath:URL + "asp/"
,getMovieUrl:URL+"asp/getMovie.asp"
}
```
UEditor v1.4.0 后进行了后端的统一配置,后端相关的配置文件是 `config.json`,在具体的后台目录下。需要注意以下两个类型的配置:
```javascript
{
"{tpl}UrlPrefix": "/ueditor/asp/",
"{tpl}PathFormat": "upload/{tpl}/{yyyy}{mm}{dd}/{time}{rand:6}"
}
```
`{tpl}PathFormat` 是资源(图片、涂鸦、文件等)保存的位置以及文件名格式,这个路径在 ASP 中是相对运行目录的。
`{tpl}UrlPrefix` 是资源定位的基本路径,在 ASP 后台中一般设置成 ASP 的目录。
比如IIS 中运行的 UEditor ASP 的目录为 C:\iis_pub\wwwroot\mysite\ueditor\asp而网站的访问地址为 http://localhost/mysite/,那么你可以这样修改这两类配置项:
```javascript
{
"{tpl}UrlPrefix": "/mysite/ueditor/asp/",
"{tpl}PathFormat": "upload/{tpl}/{yyyy}{mm}{dd}/{time}{rand:6}"
}
```
### 在 IIS 6.X 中部署
IIS 的安装在这里不介绍,请自行查阅相关资料。
1. 启用 ASP 拓展
* 打开 IIS 管理器
* 展开本地计算机
* 选中 Web 服务拓展
* 允许 Active Server Pages 拓展
2. 配置网站脚本执行权限(如果使用虚拟路径,请跳过本步骤)
* 在网站上右击,点属性
* 切换到主目录选项卡,勾选*读取*、*写入*两个权限,并且*执行权限*选择*纯脚本*
* 点确定
3. 使用虚拟路径
* 在网站上右击,点*新建* - *虚拟路径*
* 按照向导填写名称和路径
* 勾选*读取*、*执行脚本*和*写入*三个权限
* 完成虚拟目录的创建
4. 配置脚本执行身份
* 在网站或虚拟路径上右击,点属性
* 选择*目录安全性*选项卡
* 在*身份验证和访问控制*中点击*编辑*
* 勾选*启用匿名访问*,点击用户名后面的*浏览*
* 输入*administrator*点确定
* 输入*administrator*账号的密码
* 点击确定,再确认一次密码
5. 设置最大 HTTP 请求大小限制
* 找到位于 C:\Windows\System32\Inetsrv 中的 metabase.XML打开查找ASPMaxRequestEntityAllowed修改为需要的值如10240000 即 10M
> ASP 文件中也有上传文件大小的限制,不过先验证的限制是 IIS 中设置的,所以如果 IIS 中设置最大 256K那么就算 ASP 中设置了最大 10M那么超过 256K 的文件也无法上传,而且 ASP 没法给出错误信息。
### 在 IIS 7.X 中部署
IIS7 默认不安装 ASP需要手动添加进去。添加方法请读者自行查阅。
1. 配置脚本执行身份
* 选中网站或者应用程序
* 双击 IIS 中的*身份验证*
* 双击匿名身份验证
* 填写*administrator*的用户名和密码,确定
2. 设置最大 HTTP 请求大小限制
* 打开 IIS 控制台
* 双击 ASP展开*限制属性*,修改*醉倒请求实体主体限制*为需要的值如10240000 即 10M
> ASP 文件中也有上传文件大小的限制,不过先验证的限制是 IIS 中设置的,所以如果 IIS 中设置最大 256K那么就算 ASP 中设置了最大 10M那么超过 256K 的文件也无法上传,而且 ASP 没法给出错误信息。

@ -0,0 +1,219 @@
<!--#include file="PathFormatter.class.asp"-->
<!--#include file="MultiformProcessor.class.asp"-->
<%
' ASP 文件上传类
' Author: techird
' Email: techird@qq.com
'配置
'MAX_SIZE 在这里设定了之后如果出现大上传失败,请执行以下步骤
'IIS 6
'找到位于 C:\Windows\System32\Inetsrv 中的 metabase.XML 打开找到ASPMaxRequestEntityAllowed 把他修改为需要的值如10240000即10M
'IIS 7
'打开IIS控制台选择 ASP在限制属性里有一个“最大请求实体主题限制”设置需要的值
CURRENT_ENCODING = "gb2312"
Class Uploader
'上传配置
Private cfgMaxSize
Private cfgAllowType
Private cfgPathFormat
Private cfgFileField
'上传返回信息
Private stateString
Private rsOriginalFileName
Private rsFilePath
Private rsFileName
Private rsFileSize
Private rsState
Private rsFormValues
Private Sub Class_Initialize
Set stateString = Server.CreateObject("Scripting.Dictionary")
stateString.Add "SIZE_LIMIT_EXCCEED", "File size exceeded!"
stateString.Add "TYPE_NOW_ALLOW", "File type not allowed!"
End Sub
Public Property Let MaxSize(ByVal size)
cfgMaxSize = size
End Property
Public Property Let AllowType(ByVal types)
Set cfgAllowType = types
End Property
Public Property Let PathFormat(ByVal format)
cfgPathFormat = format
End Property
Public Property Let FileField(ByVal field)
cfgFileField = field
End Property
Public Property Get OriginalFileName
OriginalFileName = rsOriginalFileName
End Property
Public Property Get FileName
FileName = rsFileName
End Property
Public Property Get FilePath
FilePath = rsFilePath
End Property
Public Property Get FileSize
FileSize = rsFileSize
End Property
Public Property Get State
State = rsState
End Property
Public Property Get FormValues
Set FormValues = rsFormValues
End Property
Public Function UploadForm()
ProcessForm()
SaveFile()
End Function
Public Function ProcessForm()
Set processor = new MultiformProcessor
Set rsFormValues = processor.Process()
End Function
Public Function SaveFile()
Dim stream, filename
Set stream = rsFormValues.Item( cfgFileField )
filename = rsFormValues.Item( "filename" )
DoUpload stream, filename
End Function
Public Function UploadBase64( filename )
Dim stream, content
content = Request.Item ( cfgFileField )
Set stream = Base64Decode( content )
DoUpload stream, filename
End Function
Public Function UploadRemote( url )
Dim stream, filename
filename = Right( url, Len(url) - InStrRev(url, "/") )
Set stream = CrawlImage( url )
If Not IsNull(stream) Then
DoUpload stream, filename
Else
rsState = "Failed"
End If
Set stream = Nothing
End Function
Private Function DoUpload( stream, filename )
rsFileSize = stream.Size
If rsFileSize > cfgMaxSize Then
rsState = stateString.Item( "SIZE_LIMIT_EXCCEED" )
Exit Function
End If
rsOriginalFileName = filename
fileType = GetExt(filename)
If CheckExt(fileType) = False Then
rsState = stateString.Item( "TYPE_NOW_ALLOW" )
Exit Function
End If
Set formatter = new PathFormatter
rsFilePath = formatter.format( cfgPathFormat, filename )
savePath = Server.MapPath(rsFilePath)
CheckOrCreatePath( GetDirectoryName(savePath) )
stream.SaveToFile savePath
stream.Close
rsState = "SUCCESS"
End Function
Private Function GetDirectoryName(path)
GetDirectoryName = Left( path, InStrRev(path, "\") )
End Function
Private Function Base64Decode( content )
dim xml, stream, node
Set xml = Server.CreateObject("MSXML2.DOMDocument")
Set stream = Server.CreateObject("ADODB.Stream")
Set node = xml.CreateElement("tmpNode")
node.dataType = "bin.base64"
node.Text = content
stream.Charset = CURRENT_ENCODING
stream.Type = 1
stream.Open()
stream.Write( node.nodeTypedValue )
Set Base64Decode = stream
Set node = Nothing
Set stream = Nothing
Set xml = Nothing
End Function
Private Function CrawlImage( url )
Dim http, stream
Set http = Server.CreateObject("Microsoft.XMLHTTP")
http.Open "GET", url, false
http.Send
If http.Status = 200 Then
Set stream = Server.CreateObject("ADODB.Stream")
stream.Type = 1
stream.Open()
stream.Write http.ResponseBody
Set CrawlImage = stream
Else
Set CrawlImage = null
End If
Set http = Nothing
End Function
Private Function CheckExt( fileType )
If IsEmpty (cfgAllowType) Then
CheckExt = true
Exit Function
End If
For Each ext In cfgAllowType
If UCase(fileType) = UCase(cfgAllowType.Item(ext)) Then
CheckExt = true
Exit Function
End If
Next
CheckExt = false
End Function
Private Function GetExt( file )
GetExt = Right( file, Len(file) - InStrRev(file, ".") + 1 )
End Function
Private Function CheckOrCreatePath( ByVal path )
Set fs = Server.CreateObject("Scripting.FileSystemObject")
Dim parts
parts = Split( path, "\" )
path = ""
For Each part in parts
path = path + part + "\"
If fs.FolderExists( path ) = False Then
fs.CreateFolder( path )
End If
Next
End Function
End Class
%>

@ -0,0 +1,9 @@
<!--#include file="ASPJson.class.asp"-->
<!--#include file="config_loader.asp"-->
<%
Set json = new ASPJson
Set json.data = config
json.PrintJson()
%>

@ -0,0 +1,32 @@
<!--#include file="ASPJson.class.asp"-->
<!--#include file="config_loader.asp"-->
<!--#include file="Uploader.class.asp"-->
<%
Set up = new Uploader
up.MaxSize = config.Item("catcherMaxSize")
up.AllowType = config.Item("catcherAllowFiles")
up.PathFormat = config.Item("catcherPathFormat")
urls = Split(Request.Item("source[]"), ", ")
Set list = new ASPJson.Collection
For i = 0 To UBound(urls)
up.UploadRemote( urls(i) )
Dim instance
Set instance = new ASPJson.Collection
instance.Add "state", up.State
instance.Add "url", up.FilePath
instance.Add "source", urls(i)
list.Add i, instance
Next
Set json = new ASPJson
With json.data
.Add "state", "SUCCESS"
.Add "list", list
End With
json.PrintJson()
%>

@ -0,0 +1,81 @@
<!--#include file="ASPJson.class.asp"-->
<!--#include file="config_loader.asp"-->
<%
listTemplateName = Session.Value("ueditor_asp_listTemplateName")
start = CInt(Request.Item("start"))
size = CInt(Request.Item("size"))
total = 0
If size < 0 Then
size = CInt(config.Item( listTemplateName + "ManagerListSize" ))
End If
path = config.Item( listTemplateName + "ManagerListPath" )
Set extensions = config.Item( listTemplateName + "ManagerAllowFiles")
Set list = new ASPJson.Collection
Set fso = Server.CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(Server.MapPath(path)) = False Then
state = "找不到目录:" + path
Else
Set all = ListAllFilesInFolder( fso, path )
total = all.Count
index = 0
For Each file in all
If index >= start And index < start + size Then
Dim fileObject
Set fileObject = new ASPJson.Collection
fileObject.Add "url", file
list.Add index - start, fileObject
End If
index = index + 1
Next
state = "SUCCESS"
End If
Set json = new ASPJson
With json.data
.Add "state", state
.Add "list", list
.Add "start", start
.Add "size", size
.Add "total", total
End With
json.PrintJson()
Function ListAllFilesInFolder( fso, path )
Dim list
Set list = Server.CreateObject("Scripting.Dictionary")
Set folder = fso.GetFolder(Server.MapPath(path))
For Each file In folder.Files
If CheckExt(file.Name) Then
list.Add path & "/" & file.Name, true
End If
Next
For Each subFolder In folder.SubFolders
Set subList = ListAllFilesInFolder( fso, path & "/" & subFolder.Name )
For Each subListFile In subList
list.Add subListFile, true
Next
Next
Set ListAllFilesInFolder = list
End Function
Function CheckExt( filename )
For Each ext In extensions
If UCase(GetExt(filename)) = UCase(extensions.Item(ext)) Then
CheckExt = true
Exit Function
End If
Next
CheckExt = false
End Function
Function GetExt( file )
GetExt = Right( file, Len(file) - InStrRev(file, ".") + 1 )
End Function
%>

@ -0,0 +1,29 @@
<!--#include file="ASPJson.class.asp"-->
<!--#include file="config_loader.asp"-->
<!--#include file="Uploader.class.asp"-->
<%
uploadTemplateName = Session.Value("ueditor_asp_uploadTemplateName")
Set up = new Uploader
up.MaxSize = config.Item( uploadTemplateName & "MaxSize" )
up.FileField = config.Item( uploadTemplateName & "FieldName" )
up.PathFormat = config.Item( uploadTemplateName & "PathFormat" )
If Not IsEmpty( Session.Value("base64Upload") ) Then
up.UploadBase64( Session.Value("base64Upload") )
Else
up.AllowType = config.Item( uploadTemplateName & "AllowFiles" )
up.UploadForm()
End If
Set json = new ASPJson
With json.data
.Add "url", up.FilePath
.Add "original", up.OriginalFileName
.Add "state", up.State
.Add "title", up.OriginalFileName
End With
json.PrintJson()
%>

@ -0,0 +1,94 @@
/* ,使 */
{
/* */
"imageActionName": "uploadimage", /* action */
"imageFieldName": "upfile", /* */
"imageMaxSize": 2048000, /* B */
"imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* */
"imageCompressEnable": true, /* ,true */
"imageCompressBorder": 1600, /* */
"imageInsertAlign": "none", /* */
"imageUrlPrefix": "/ueditor/asp/", /* 访 */
"imagePathFormat": "upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* , */
/* {filename} , */
/* {rand:6} , */
/* {time} */
/* {yyyy} */
/* {yy} */
/* {mm} */
/* {dd} */
/* {hh} */
/* {ii} */
/* {ss} */
/* \ : * ? " < > | */
/* 线: fex.baidu.com/ueditor/#use-format_upload_filename */
/* */
"scrawlActionName": "uploadscrawl", /* action */
"scrawlFieldName": "upfile", /* */
"scrawlPathFormat": "upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* , */
"scrawlMaxSize": 2048000, /* B */
"scrawlUrlPrefix": "/ueditor/asp/", /* 访 */
"scrawlInsertAlign": "none",
/* */
"snapscreenActionName": "uploadimage", /* action */
"snapscreenPathFormat": "upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* , */
"snapscreenUrlPrefix": "/ueditor/asp/", /* 访 */
"snapscreenInsertAlign": "none", /* */
/* */
"catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
"catcherActionName": "catchimage", /* action */
"catcherFieldName": "source", /* */
"catcherPathFormat": "upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* , */
"catcherUrlPrefix": "/ueditor/asp/", /* 访 */
"catcherMaxSize": 2048000, /* B */
"catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* */
/* */
"videoActionName": "uploadvideo", /* action */
"videoFieldName": "upfile", /* */
"videoPathFormat": "upload/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* , */
"videoUrlPrefix": "/ueditor/asp/", /* 访 */
"videoMaxSize": 102400000, /* B100MB */
"videoAllowFiles": [
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* */
/* */
"fileActionName": "uploadfile", /* controller,action */
"fileFieldName": "upfile", /* */
"filePathFormat": "upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* , */
"fileUrlPrefix": "/ueditor/asp/", /* 访 */
"fileMaxSize": 51200000, /* B50MB */
"fileAllowFiles": [
".png", ".jpg", ".jpeg", ".gif", ".bmp",
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
], /* */
/* */
"imageManagerActionName": "listimage", /* action */
"imageManagerListPath": "upload/image", /* */
"imageManagerListSize": 20, /* */
"imageManagerUrlPrefix": "/ueditor/asp/", /* 访 */
"imageManagerInsertAlign": "none", /* */
"imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* */
/* */
"fileManagerActionName": "listfile", /* action */
"fileManagerListPath": "upload/file", /* */
"fileManagerUrlPrefix": "/ueditor/asp/", /* 访 */
"fileManagerListSize": 20, /* */
"fileManagerAllowFiles": [
".png", ".jpg", ".jpeg", ".gif", ".bmp",
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
] /* */
}

@ -0,0 +1,21 @@
<%
Set json = new ASPJson
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set stream = Server.CreateObject("ADODB.Stream")
stream.Open()
stream.Charset = "UTF-8"
stream.LoadFromFile Server.MapPath( "config.json" )
content = stream.ReadText()
Set commentPattern = new RegExp
commentPattern.Multiline = true
commentPattern.Pattern = "/\*[\s\S]+?\*/"
commentPattern.Global = true
content = commentPattern.Replace(content, "")
json.loadJSON( content )
Set config = json.data
%>

@ -0,0 +1,44 @@
<%@ LANGUAGE="VBSCRIPT" CODEPAGE="65001" %>
<%
action = Request.Item("action")
Session.Contents.Remove("ueditor_asp_uploadTemplateName")
Session.Contents.Remove("ueditor_asp_base64Upload")
Session.Contents.Remove("ueditor_asp_listTemplateName")
Select Case action
Case "config"
Server.Execute("action_config.asp")
Case "uploadimage"
Session.Value("ueditor_asp_uploadTemplateName") = "image"
Server.Execute("action_upload.asp")
Case "uploadscrawl"
Session.Value("ueditor_asp_uploadTemplateName") = "scrawl"
Session.Value("base64Upload") = "scrawl.png"
Server.Execute("action_upload.asp")
Case "uploadvideo"
Session.Value("ueditor_asp_uploadTemplateName") = "video"
Server.Execute("action_upload.asp")
Case "uploadfile"
Session.Value("ueditor_asp_uploadTemplateName") = "file"
Server.Execute("action_upload.asp")
Case "listimage"
Session.Value("ueditor_asp_listTemplateName") = "image"
Server.Execute("action_list.asp")
Case "listfile"
Session.Value("ueditor_asp_listTemplateName") = "file"
Server.Execute("action_list.asp")
Case "catchimage"
Server.Execute("action_crawler.asp")
End Select
%>

@ -0,0 +1,40 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
*{color: #838383;margin: 0;padding: 0}
html,body {font-size: 12px;overflow: hidden; }
.content{padding:5px 0 0 15px;}
input{width:210px;height:21px;line-height:21px;margin-left: 4px;}
</style>
</head>
<body>
<div class="content">
<span><var id="lang_input_anchorName"></var></span><input id="anchorName" value="" />
</div>
<script type="text/javascript" src="../internal.js"></script>
<script type="text/javascript">
var anchorInput = $G('anchorName'),
node = editor.selection.getRange().getClosedNode();
if(node && node.tagName == 'IMG' && (node = node.getAttribute('anchorname'))){
anchorInput.value = node;
}
anchorInput.onkeydown = function(evt){
evt = evt || window.event;
if(evt.keyCode == 13){
editor.execCommand('anchor', anchorInput.value);
dialog.close();
domUtils.preventDefault(evt)
}
};
dialog.onok = function (){
editor.execCommand('anchor', anchorInput.value);
dialog.close();
};
$focus(anchorInput);
</script>
</body>
</html>

@ -0,0 +1,681 @@
@charset "utf-8";
/* dialog样式 */
.wrapper {
zoom: 1;
width: 630px;
*width: 626px;
height: 380px;
margin: 0 auto;
padding: 10px;
position: relative;
font-family: sans-serif;
}
/*tab样式框大小*/
.tabhead {
float:left;
}
.tabbody {
width: 100%;
height: 346px;
position: relative;
clear: both;
}
.tabbody .panel {
position: absolute;
width: 0;
height: 0;
background: #fff;
overflow: hidden;
display: none;
}
.tabbody .panel.focus {
width: 100%;
height: 346px;
display: block;
}
/* 上传附件 */
.tabbody #upload.panel {
width: 0;
height: 0;
overflow: hidden;
position: absolute !important;
clip: rect(1px, 1px, 1px, 1px);
background: #fff;
display: block;
}
.tabbody #upload.panel.focus {
width: 100%;
height: 346px;
display: block;
clip: auto;
}
#upload .queueList {
margin: 0;
width: 100%;
height: 100%;
position: absolute;
overflow: hidden;
}
#upload p {
margin: 0;
}
.element-invisible {
width: 0 !important;
height: 0 !important;
border: 0;
padding: 0;
margin: 0;
overflow: hidden;
position: absolute !important;
clip: rect(1px, 1px, 1px, 1px);
}
#upload .placeholder {
margin: 10px;
border: 2px dashed #e6e6e6;
*border: 0px dashed #e6e6e6;
height: 172px;
padding-top: 150px;
text-align: center;
background: url(./images/image.png) center 70px no-repeat;
color: #cccccc;
font-size: 18px;
position: relative;
top:0;
*top: 10px;
}
#upload .placeholder .webuploader-pick {
font-size: 18px;
background: #00b7ee;
border-radius: 3px;
line-height: 44px;
padding: 0 30px;
*width: 120px;
color: #fff;
display: inline-block;
margin: 0 auto 20px auto;
cursor: pointer;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
}
#upload .placeholder .webuploader-pick-hover {
background: #00a2d4;
}
#filePickerContainer {
text-align: center;
}
#upload .placeholder .flashTip {
color: #666666;
font-size: 12px;
position: absolute;
width: 100%;
text-align: center;
bottom: 20px;
}
#upload .placeholder .flashTip a {
color: #0785d1;
text-decoration: none;
}
#upload .placeholder .flashTip a:hover {
text-decoration: underline;
}
#upload .placeholder.webuploader-dnd-over {
border-color: #999999;
}
#upload .filelist {
list-style: none;
margin: 0;
padding: 0;
overflow-x: hidden;
overflow-y: auto;
position: relative;
height: 300px;
}
#upload .filelist:after {
content: '';
display: block;
width: 0;
height: 0;
overflow: hidden;
clear: both;
}
#upload .filelist li {
width: 113px;
height: 113px;
background: url(./images/bg.png);
text-align: center;
margin: 9px 0 0 9px;
*margin: 6px 0 0 6px;
position: relative;
display: block;
float: left;
overflow: hidden;
font-size: 12px;
}
#upload .filelist li p.log {
position: relative;
top: -45px;
}
#upload .filelist li p.title {
position: absolute;
top: 0;
left: 0;
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
top: 5px;
text-indent: 5px;
text-align: left;
}
#upload .filelist li p.progress {
position: absolute;
width: 100%;
bottom: 0;
left: 0;
height: 8px;
overflow: hidden;
z-index: 50;
margin: 0;
border-radius: 0;
background: none;
-webkit-box-shadow: 0 0 0;
}
#upload .filelist li p.progress span {
display: none;
overflow: hidden;
width: 0;
height: 100%;
background: #1483d8 url(./images/progress.png) repeat-x;
-webit-transition: width 200ms linear;
-moz-transition: width 200ms linear;
-o-transition: width 200ms linear;
-ms-transition: width 200ms linear;
transition: width 200ms linear;
-webkit-animation: progressmove 2s linear infinite;
-moz-animation: progressmove 2s linear infinite;
-o-animation: progressmove 2s linear infinite;
-ms-animation: progressmove 2s linear infinite;
animation: progressmove 2s linear infinite;
-webkit-transform: translateZ(0);
}
@-webkit-keyframes progressmove {
0% {
background-position: 0 0;
}
100% {
background-position: 17px 0;
}
}
@-moz-keyframes progressmove {
0% {
background-position: 0 0;
}
100% {
background-position: 17px 0;
}
}
@keyframes progressmove {
0% {
background-position: 0 0;
}
100% {
background-position: 17px 0;
}
}
#upload .filelist li p.imgWrap {
position: relative;
z-index: 2;
line-height: 113px;
vertical-align: middle;
overflow: hidden;
width: 113px;
height: 113px;
-webkit-transform-origin: 50% 50%;
-moz-transform-origin: 50% 50%;
-o-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
transform-origin: 50% 50%;
-webit-transition: 200ms ease-out;
-moz-transition: 200ms ease-out;
-o-transition: 200ms ease-out;
-ms-transition: 200ms ease-out;
transition: 200ms ease-out;
}
#upload .filelist li p.imgWrap.notimage {
margin-top: 0;
width: 111px;
height: 111px;
border: 1px #eeeeee solid;
}
#upload .filelist li p.imgWrap.notimage i.file-preview {
margin-top: 15px;
}
#upload .filelist li img {
width: 100%;
}
#upload .filelist li p.error {
background: #f43838;
color: #fff;
position: absolute;
bottom: 0;
left: 0;
height: 28px;
line-height: 28px;
width: 100%;
z-index: 100;
display:none;
}
#upload .filelist li .success {
display: block;
position: absolute;
left: 0;
bottom: 0;
height: 40px;
width: 100%;
z-index: 200;
background: url(./images/success.png) no-repeat right bottom;
background-image: url(./images/success.gif) \9;
}
#upload .filelist li.filePickerBlock {
width: 113px;
height: 113px;
background: url(./images/image.png) no-repeat center 12px;
border: 1px solid #eeeeee;
border-radius: 0;
}
#upload .filelist li.filePickerBlock div.webuploader-pick {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
opacity: 0;
background: none;
font-size: 0;
}
#upload .filelist div.file-panel {
position: absolute;
height: 0;
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#80000000', endColorstr='#80000000') \0;
background: rgba(0, 0, 0, 0.5);
width: 100%;
top: 0;
left: 0;
overflow: hidden;
z-index: 300;
}
#upload .filelist div.file-panel span {
width: 24px;
height: 24px;
display: inline;
float: right;
text-indent: -9999px;
overflow: hidden;
background: url(./images/icons.png) no-repeat;
background: url(./images/icons.gif) no-repeat \9;
margin: 5px 1px 1px;
cursor: pointer;
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#upload .filelist div.file-panel span.rotateLeft {
display:none;
background-position: 0 -24px;
}
#upload .filelist div.file-panel span.rotateLeft:hover {
background-position: 0 0;
}
#upload .filelist div.file-panel span.rotateRight {
display:none;
background-position: -24px -24px;
}
#upload .filelist div.file-panel span.rotateRight:hover {
background-position: -24px 0;
}
#upload .filelist div.file-panel span.cancel {
background-position: -48px -24px;
}
#upload .filelist div.file-panel span.cancel:hover {
background-position: -48px 0;
}
#upload .statusBar {
height: 45px;
border-bottom: 1px solid #dadada;
margin: 0 10px;
padding: 0;
line-height: 45px;
vertical-align: middle;
position: relative;
}
#upload .statusBar .progress {
border: 1px solid #1483d8;
width: 198px;
background: #fff;
height: 18px;
position: absolute;
top: 12px;
display: none;
text-align: center;
line-height: 18px;
color: #6dbfff;
margin: 0 10px 0 0;
}
#upload .statusBar .progress span.percentage {
width: 0;
height: 100%;
left: 0;
top: 0;
background: #1483d8;
position: absolute;
}
#upload .statusBar .progress span.text {
position: relative;
z-index: 10;
}
#upload .statusBar .info {
display: inline-block;
font-size: 14px;
color: #666666;
}
#upload .statusBar .btns {
position: absolute;
top: 7px;
right: 0;
line-height: 30px;
}
#filePickerBtn {
display: inline-block;
float: left;
}
#upload .statusBar .btns .webuploader-pick,
#upload .statusBar .btns .uploadBtn,
#upload .statusBar .btns .uploadBtn.state-uploading,
#upload .statusBar .btns .uploadBtn.state-paused {
background: #ffffff;
border: 1px solid #cfcfcf;
color: #565656;
padding: 0 18px;
display: inline-block;
border-radius: 3px;
margin-left: 10px;
cursor: pointer;
font-size: 14px;
float: left;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#upload .statusBar .btns .webuploader-pick-hover,
#upload .statusBar .btns .uploadBtn:hover,
#upload .statusBar .btns .uploadBtn.state-uploading:hover,
#upload .statusBar .btns .uploadBtn.state-paused:hover {
background: #f0f0f0;
}
#upload .statusBar .btns .uploadBtn,
#upload .statusBar .btns .uploadBtn.state-paused{
background: #00b7ee;
color: #fff;
border-color: transparent;
}
#upload .statusBar .btns .uploadBtn:hover,
#upload .statusBar .btns .uploadBtn.state-paused:hover{
background: #00a2d4;
}
#upload .statusBar .btns .uploadBtn.disabled {
pointer-events: none;
filter:alpha(opacity=60);
-moz-opacity:0.6;
-khtml-opacity: 0.6;
opacity: 0.6;
}
/* 图片管理样式 */
#online {
width: 100%;
height: 336px;
padding: 10px 0 0 0;
}
#online #fileList{
width: 100%;
height: 100%;
overflow-x: hidden;
overflow-y: auto;
position: relative;
}
#online ul {
display: block;
list-style: none;
margin: 0;
padding: 0;
}
#online li {
float: left;
display: block;
list-style: none;
padding: 0;
width: 113px;
height: 113px;
margin: 0 0 9px 9px;
*margin: 0 0 6px 6px;
background-color: #eee;
overflow: hidden;
cursor: pointer;
position: relative;
}
#online li.clearFloat {
float: none;
clear: both;
display: block;
width:0;
height:0;
margin: 0;
padding: 0;
}
#online li img {
cursor: pointer;
}
#online li div.file-wrapper {
cursor: pointer;
position: absolute;
display: block;
width: 111px;
height: 111px;
border: 1px solid #eee;
background: url("./images/bg.png") repeat;
}
#online li div span.file-title{
display: block;
padding: 0 3px;
margin: 3px 0 0 0;
font-size: 12px;
height: 13px;
color: #555555;
text-align: center;
width: 107px;
white-space: nowrap;
word-break: break-all;
overflow: hidden;
text-overflow: ellipsis;
}
#online li .icon {
cursor: pointer;
width: 113px;
height: 113px;
position: absolute;
top: 0;
left: 0;
z-index: 2;
border: 0;
background-repeat: no-repeat;
}
#online li .icon:hover {
width: 107px;
height: 107px;
border: 3px solid #1094fa;
}
#online li.selected .icon {
background-image: url(images/success.png);
background-image: url(images/success.gif) \9;
background-position: 75px 75px;
}
#online li.selected .icon:hover {
width: 107px;
height: 107px;
border: 3px solid #1094fa;
background-position: 72px 72px;
}
/* 在线文件的文件预览图标 */
i.file-preview {
display: block;
margin: 10px auto;
width: 70px;
height: 70px;
background-image: url("./images/file-icons.png");
background-image: url("./images/file-icons.gif") \9;
background-position: -140px center;
background-repeat: no-repeat;
}
i.file-preview.file-type-dir{
background-position: 0 center;
}
i.file-preview.file-type-file{
background-position: -140px center;
}
i.file-preview.file-type-filelist{
background-position: -210px center;
}
i.file-preview.file-type-zip,
i.file-preview.file-type-rar,
i.file-preview.file-type-7z,
i.file-preview.file-type-tar,
i.file-preview.file-type-gz,
i.file-preview.file-type-bz2{
background-position: -280px center;
}
i.file-preview.file-type-xls,
i.file-preview.file-type-xlsx{
background-position: -350px center;
}
i.file-preview.file-type-doc,
i.file-preview.file-type-docx{
background-position: -420px center;
}
i.file-preview.file-type-ppt,
i.file-preview.file-type-pptx{
background-position: -490px center;
}
i.file-preview.file-type-vsd{
background-position: -560px center;
}
i.file-preview.file-type-pdf{
background-position: -630px center;
}
i.file-preview.file-type-txt,
i.file-preview.file-type-md,
i.file-preview.file-type-json,
i.file-preview.file-type-htm,
i.file-preview.file-type-xml,
i.file-preview.file-type-html,
i.file-preview.file-type-js,
i.file-preview.file-type-css,
i.file-preview.file-type-php,
i.file-preview.file-type-jsp,
i.file-preview.file-type-asp{
background-position: -700px center;
}
i.file-preview.file-type-apk{
background-position: -770px center;
}
i.file-preview.file-type-exe{
background-position: -840px center;
}
i.file-preview.file-type-ipa{
background-position: -910px center;
}
i.file-preview.file-type-mp4,
i.file-preview.file-type-swf,
i.file-preview.file-type-mkv,
i.file-preview.file-type-avi,
i.file-preview.file-type-flv,
i.file-preview.file-type-mov,
i.file-preview.file-type-mpg,
i.file-preview.file-type-mpeg,
i.file-preview.file-type-ogv,
i.file-preview.file-type-webm,
i.file-preview.file-type-rm,
i.file-preview.file-type-rmvb{
background-position: -980px center;
}
i.file-preview.file-type-ogg,
i.file-preview.file-type-wav,
i.file-preview.file-type-wmv,
i.file-preview.file-type-mid,
i.file-preview.file-type-mp3{
background-position: -1050px center;
}
i.file-preview.file-type-jpg,
i.file-preview.file-type-jpeg,
i.file-preview.file-type-gif,
i.file-preview.file-type-bmp,
i.file-preview.file-type-png,
i.file-preview.file-type-psd{
background-position: -140px center;
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save