file upload

This commit is contained in:
2021-11-05 16:43:14 +08:00
commit 7777119e97
427 changed files with 162488 additions and 0 deletions

File diff suppressed because it is too large Load Diff

BIN
.vs/api/v16/.suo Normal file

Binary file not shown.

25
api.sln Normal file
View File

@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31729.503
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "api", "api\api.csproj", "{0AAF1A40-7A1C-43A6-AFB3-9C127E917B90}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0AAF1A40-7A1C-43A6-AFB3-9C127E917B90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0AAF1A40-7A1C-43A6-AFB3-9C127E917B90}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0AAF1A40-7A1C-43A6-AFB3-9C127E917B90}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0AAF1A40-7A1C-43A6-AFB3-9C127E917B90}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {22797AF1-AA70-4459-8010-638F86B01669}
EndGlobalSection
EndGlobal

7
api/About.aspx Normal file
View File

@@ -0,0 +1,7 @@
<%@ Page Title="About" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="About.aspx.cs" Inherits="api.About" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<h2><%: Title %>.</h2>
<h3>Your application description page.</h3>
<p>Use this area to provide additional information.</p>
</asp:Content>

17
api/About.aspx.cs Normal file
View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace api
{
public partial class About : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}

16
api/About.aspx.designer.cs generated Normal file
View File

@@ -0,0 +1,16 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 這段程式碼是由工具產生的。
//
// 變更這個檔案可能會導致不正確的行為,而且如果已重新產生
// 程式碼,變更將會遺失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace api
{
public partial class About
{
}
}

View File

@@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Optimization;
using System.Web.UI;
namespace api
{
public class BundleConfig
{
// 如需統合的詳細資訊,請前往 https://go.microsoft.com/fwlink/?LinkID=303951
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/WebFormsJs").Include(
"~/Scripts/WebForms/WebForms.js",
"~/Scripts/WebForms/WebUIValidation.js",
"~/Scripts/WebForms/MenuStandards.js",
"~/Scripts/WebForms/Focus.js",
"~/Scripts/WebForms/GridView.js",
"~/Scripts/WebForms/DetailsView.js",
"~/Scripts/WebForms/TreeView.js",
"~/Scripts/WebForms/WebParts.js"));
// 順序對於這些檔案產生作用而言相當重要,它們有明確的相依性
bundles.Add(new ScriptBundle("~/bundles/MsAjaxJs").Include(
"~/Scripts/WebForms/MsAjax/MicrosoftAjax.js",
"~/Scripts/WebForms/MsAjax/MicrosoftAjaxApplicationServices.js",
"~/Scripts/WebForms/MsAjax/MicrosoftAjaxTimer.js",
"~/Scripts/WebForms/MsAjax/MicrosoftAjaxWebForms.js"));
// 使用 Modernizr 的開發版本來開發並深入了解。當您準備好量產時,
// 準備好生產時,請使用 https://modernizr.com 中的建置工具,只挑選您需要的測試
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
"~/Scripts/modernizr-*"));
}
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Routing;
using Microsoft.AspNet.FriendlyUrls;
namespace api
{
public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
}
}
}

View File

@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace api
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API 設定和服務
// Web API 路由
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}

7
api/Bundle.config Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<bundles version="1.0">
<styleBundle path="~/Content/css">
<include path="~/Content/bootstrap.css" />
<include path="~/Content/Site.css" />
</styleBundle>
</bundles>

17
api/Contact.aspx Normal file
View File

@@ -0,0 +1,17 @@
<%@ Page Title="Contact" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Contact.aspx.cs" Inherits="api.Contact" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<h2><%: Title %>.</h2>
<h3>Your contact page.</h3>
<address>
One Microsoft Way<br />
Redmond, WA 98052-6399<br />
<abbr title="Phone">P:</abbr>
425.555.0100
</address>
<address>
<strong>Support:</strong> <a href="mailto:Support@example.com">Support@example.com</a><br />
<strong>Marketing:</strong> <a href="mailto:Marketing@example.com">Marketing@example.com</a>
</address>
</asp:Content>

17
api/Contact.aspx.cs Normal file
View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace api
{
public partial class Contact : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}

16
api/Contact.aspx.designer.cs generated Normal file
View File

@@ -0,0 +1,16 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace api
{
public partial class Contact
{
}
}

31
api/Content/Site.css Normal file
View File

@@ -0,0 +1,31 @@
/* Move down content because we have a fixed navbar that is 50px tall */
body {
padding-top: 50px;
padding-bottom: 20px;
}
/* Wrapping element */
/* Set some basic padding to keep content from hitting the edges */
.body-content {
padding-left: 15px;
padding-right: 15px;
}
/* Set widths on the form inputs since otherwise they're 100% wide */
input,
select,
textarea {
max-width: 280px;
}
/* Responsive: Portrait tablets and up */
@media screen and (min-width: 768px) {
.jumbotron {
margin-top: 20px;
}
.body-content {
padding: 0;
}
}

587
api/Content/bootstrap-theme.css vendored Normal file
View File

@@ -0,0 +1,587 @@
/*!
* Bootstrap v3.4.1 (https://getbootstrap.com/)
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
.btn-default,
.btn-primary,
.btn-success,
.btn-info,
.btn-warning,
.btn-danger {
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
}
.btn-default:active,
.btn-primary:active,
.btn-success:active,
.btn-info:active,
.btn-warning:active,
.btn-danger:active,
.btn-default.active,
.btn-primary.active,
.btn-success.active,
.btn-info.active,
.btn-warning.active,
.btn-danger.active {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-default.disabled,
.btn-primary.disabled,
.btn-success.disabled,
.btn-info.disabled,
.btn-warning.disabled,
.btn-danger.disabled,
.btn-default[disabled],
.btn-primary[disabled],
.btn-success[disabled],
.btn-info[disabled],
.btn-warning[disabled],
.btn-danger[disabled],
fieldset[disabled] .btn-default,
fieldset[disabled] .btn-primary,
fieldset[disabled] .btn-success,
fieldset[disabled] .btn-info,
fieldset[disabled] .btn-warning,
fieldset[disabled] .btn-danger {
-webkit-box-shadow: none;
box-shadow: none;
}
.btn-default .badge,
.btn-primary .badge,
.btn-success .badge,
.btn-info .badge,
.btn-warning .badge,
.btn-danger .badge {
text-shadow: none;
}
.btn:active,
.btn.active {
background-image: none;
}
.btn-default {
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #dbdbdb;
text-shadow: 0 1px 0 #fff;
border-color: #ccc;
}
.btn-default:hover,
.btn-default:focus {
background-color: #e0e0e0;
background-position: 0 -15px;
}
.btn-default:active,
.btn-default.active {
background-color: #e0e0e0;
border-color: #dbdbdb;
}
.btn-default.disabled,
.btn-default[disabled],
fieldset[disabled] .btn-default,
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus,
.btn-default.disabled:active,
.btn-default[disabled]:active,
fieldset[disabled] .btn-default:active,
.btn-default.disabled.active,
.btn-default[disabled].active,
fieldset[disabled] .btn-default.active {
background-color: #e0e0e0;
background-image: none;
}
.btn-primary {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #245580;
}
.btn-primary:hover,
.btn-primary:focus {
background-color: #265a88;
background-position: 0 -15px;
}
.btn-primary:active,
.btn-primary.active {
background-color: #265a88;
border-color: #245580;
}
.btn-primary.disabled,
.btn-primary[disabled],
fieldset[disabled] .btn-primary,
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus,
.btn-primary.disabled:active,
.btn-primary[disabled]:active,
fieldset[disabled] .btn-primary:active,
.btn-primary.disabled.active,
.btn-primary[disabled].active,
fieldset[disabled] .btn-primary.active {
background-color: #265a88;
background-image: none;
}
.btn-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #3e8f3e;
}
.btn-success:hover,
.btn-success:focus {
background-color: #419641;
background-position: 0 -15px;
}
.btn-success:active,
.btn-success.active {
background-color: #419641;
border-color: #3e8f3e;
}
.btn-success.disabled,
.btn-success[disabled],
fieldset[disabled] .btn-success,
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus,
.btn-success.disabled:active,
.btn-success[disabled]:active,
fieldset[disabled] .btn-success:active,
.btn-success.disabled.active,
.btn-success[disabled].active,
fieldset[disabled] .btn-success.active {
background-color: #419641;
background-image: none;
}
.btn-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #28a4c9;
}
.btn-info:hover,
.btn-info:focus {
background-color: #2aabd2;
background-position: 0 -15px;
}
.btn-info:active,
.btn-info.active {
background-color: #2aabd2;
border-color: #28a4c9;
}
.btn-info.disabled,
.btn-info[disabled],
fieldset[disabled] .btn-info,
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus,
.btn-info.disabled:active,
.btn-info[disabled]:active,
fieldset[disabled] .btn-info:active,
.btn-info.disabled.active,
.btn-info[disabled].active,
fieldset[disabled] .btn-info.active {
background-color: #2aabd2;
background-image: none;
}
.btn-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #e38d13;
}
.btn-warning:hover,
.btn-warning:focus {
background-color: #eb9316;
background-position: 0 -15px;
}
.btn-warning:active,
.btn-warning.active {
background-color: #eb9316;
border-color: #e38d13;
}
.btn-warning.disabled,
.btn-warning[disabled],
fieldset[disabled] .btn-warning,
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus,
.btn-warning.disabled:active,
.btn-warning[disabled]:active,
fieldset[disabled] .btn-warning:active,
.btn-warning.disabled.active,
.btn-warning[disabled].active,
fieldset[disabled] .btn-warning.active {
background-color: #eb9316;
background-image: none;
}
.btn-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #b92c28;
}
.btn-danger:hover,
.btn-danger:focus {
background-color: #c12e2a;
background-position: 0 -15px;
}
.btn-danger:active,
.btn-danger.active {
background-color: #c12e2a;
border-color: #b92c28;
}
.btn-danger.disabled,
.btn-danger[disabled],
fieldset[disabled] .btn-danger,
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus,
.btn-danger.disabled:active,
.btn-danger[disabled]:active,
fieldset[disabled] .btn-danger:active,
.btn-danger.disabled.active,
.btn-danger[disabled].active,
fieldset[disabled] .btn-danger.active {
background-color: #c12e2a;
background-image: none;
}
.thumbnail,
.img-thumbnail {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
background-color: #e8e8e8;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
background-color: #2e6da4;
}
.navbar-default {
background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f8f8f8));
background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
}
.navbar-brand,
.navbar-nav > li > a {
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
}
.navbar-inverse {
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
border-radius: 4px;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
}
.navbar-inverse .navbar-brand,
.navbar-inverse .navbar-nav > li > a {
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.navbar-static-top,
.navbar-fixed-top,
.navbar-fixed-bottom {
border-radius: 0;
}
@media (max-width: 767px) {
.navbar .navbar-nav .open .dropdown-menu > .active > a,
.navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #fff;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
}
.alert {
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
}
.alert-success {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
background-repeat: repeat-x;
border-color: #b2dba1;
}
.alert-info {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
background-repeat: repeat-x;
border-color: #9acfea;
}
.alert-warning {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
background-repeat: repeat-x;
border-color: #f5e79e;
}
.alert-danger {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
background-repeat: repeat-x;
border-color: #dca7a7;
}
.progress {
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-striped {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.list-group {
border-radius: 4px;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
text-shadow: 0 -1px 0 #286090;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
background-repeat: repeat-x;
border-color: #2b669a;
}
.list-group-item.active .badge,
.list-group-item.active:hover .badge,
.list-group-item.active:focus .badge {
text-shadow: none;
}
.panel {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}
.panel-default > .panel-heading {
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
}
.panel-primary > .panel-heading {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.panel-success > .panel-heading {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
background-repeat: repeat-x;
}
.panel-info > .panel-heading {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
background-repeat: repeat-x;
}
.panel-warning > .panel-heading {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
background-repeat: repeat-x;
}
.panel-danger > .panel-heading {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
background-repeat: repeat-x;
}
.well {
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
border-color: #dcdcdc;
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
}
/*# sourceMappingURL=bootstrap-theme.css.map */

File diff suppressed because one or more lines are too long

6
api/Content/bootstrap-theme.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

6834
api/Content/bootstrap.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

6
api/Content/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

38
api/Default.aspx Normal file
View File

@@ -0,0 +1,38 @@
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master"
AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebForms._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script src="Scripts/jquery-3.4.1.min.js" type="text/javascript"></script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>Products</h2>
<table>
<thead>
<tr><th>Name</th><th>Price</th></tr>
</thead>
<tbody id="products">
</tbody>
</table>
<script type="text/javascript">
function getProducts() {
$.getJSON("api/products",
function (data) {
$('#products').empty(); // Clear the table body.
// Loop through the list of products.
$.each(data, function (key, val) {
// Add a table row for the product.
var row = '<td>' + val.Name + '</td><td>' + val.Price + '</td>';
$('<tr/>', { html: row }) // Append the name.
.appendTo($('#products'));
});
});
}
$(document).ready(getProducts);
</script>
</asp:Content>

17
api/Default.aspx.cs Normal file
View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace api
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}

17
api/Default.aspx.designer.cs generated Normal file
View File

@@ -0,0 +1,17 @@
//------------------------------------------------------------------------------
// <自動產生的>
// 這段程式碼是由工具產生的。
//
// 變更這個檔案可能會導致不正確的行為,而且如果已重新產生
// 程式碼,則會遺失變更。
// </自動產生的>
//------------------------------------------------------------------------------
namespace WebForms
{
public partial class _Default
{
}
}

1
api/Global.asax Normal file
View File

@@ -0,0 +1 @@
<%@ Application Codebehind="Global.asax.cs" Inherits="api.Global" Language="C#" %>

29
api/Global.asax.cs Normal file
View File

@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Optimization;
using System.Web.Routing;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.Http;
namespace api
{
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
// 應用程式啟動時執行的程式碼
//GlobalConfiguration.Configure(WebApiConfig.Register);
//RouteConfig.RegisterRoutes(RouteTable.Routes);
//BundleConfig.RegisterBundles(BundleTable.Bundles);
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
}
}
}

15
api/Product.cs Normal file
View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace api
{
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public string Category { get; set; }
}
}

44
api/ProductsController.cs Normal file
View File

@@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace api
{
public class ProductsController : ApiController
{
Product[] products = new Product[]
{
new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
};
public IEnumerable<Product> GetAllProducts()
{
return products;
}
public Product GetProductById(int id)
{
var product = products.FirstOrDefault((p) => p.Id == id);
if (product == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return product;
}
public IEnumerable<Product> GetProductsByCategory(string category)
{
return products.Where(
(p) => string.Equals(p.Category, category,
StringComparison.OrdinalIgnoreCase));
}
}
}

View File

@@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 組件的一般資訊是由下列的屬性集
// 控制。變更這些屬性值可修改與組件關聯的
// 資訊。
[assembly: AssemblyTitle("api")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("api")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 將 ComVisible 設定為 false 會使得這個組件中的型別
// 對 COM 元件而言為不可見。如果您需要從 COM 存取此組件中
// 的型別,請在該型別上將 ComVisible 屬性設定為 true。
[assembly: ComVisible(false)]
// 下列 GUID 為專案公開 (Expose) 至 COM 時所要使用的 typelib ID
[assembly: Guid("0aaf1a40-7a1c-43a6-afb3-9c127e917b90")]
// 組件的版本資訊是由下列四項值構成:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// 您可以指定所有的值,也可以依照以下的方式,使用 '*' 將修訂和組建編號
// 指定為預設值:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,34 @@
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/DetailsView.js
function DetailsView() {
this.pageIndex = null;
this.dataKeys = null;
this.createPropertyString = DetailsView_createPropertyString;
this.setStateField = DetailsView_setStateValue;
this.getHiddenFieldContents = DetailsView_getHiddenFieldContents;
this.stateField = null;
this.panelElement = null;
this.callback = null;
}
function DetailsView_createPropertyString() {
return createPropertyStringFromValues_DetailsView(this.pageIndex, this.dataKeys);
}
function DetailsView_setStateValue() {
this.stateField.value = this.createPropertyString();
}
function DetailsView_OnCallback (result, context) {
var value = new String(result);
var valsArray = value.split("|");
var innerHtml = valsArray[2];
for (var i = 3; i < valsArray.length; i++) {
innerHtml += "|" + valsArray[i];
}
context.panelElement.innerHTML = innerHtml;
context.stateField.value = createPropertyStringFromValues_DetailsView(valsArray[0], valsArray[1]);
}
function DetailsView_getHiddenFieldContents(arg) {
return arg + "|" + this.stateField.value;
}
function createPropertyStringFromValues_DetailsView(pageIndex, dataKeys) {
var value = new Array(pageIndex, dataKeys);
return value.join("|");
}

View File

@@ -0,0 +1,93 @@
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/WebForms.js
function WebForm_FindFirstFocusableChild(control) {
if (!control || !(control.tagName)) {
return null;
}
var tagName = control.tagName.toLowerCase();
if (tagName == "undefined") {
return null;
}
var children = control.childNodes;
if (children) {
for (var i = 0; i < children.length; i++) {
try {
if (WebForm_CanFocus(children[i])) {
return children[i];
}
else {
var focused = WebForm_FindFirstFocusableChild(children[i]);
if (WebForm_CanFocus(focused)) {
return focused;
}
}
} catch (e) {
}
}
}
return null;
}
function WebForm_AutoFocus(focusId) {
var targetControl;
if (__nonMSDOMBrowser) {
targetControl = document.getElementById(focusId);
}
else {
targetControl = document.all[focusId];
}
var focused = targetControl;
if (targetControl && (!WebForm_CanFocus(targetControl)) ) {
focused = WebForm_FindFirstFocusableChild(targetControl);
}
if (focused) {
try {
focused.focus();
if (__nonMSDOMBrowser) {
focused.scrollIntoView(false);
}
if (window.__smartNav) {
window.__smartNav.ae = focused.id;
}
}
catch (e) {
}
}
}
function WebForm_CanFocus(element) {
if (!element || !(element.tagName)) return false;
var tagName = element.tagName.toLowerCase();
return (!(element.disabled) &&
(!(element.type) || element.type.toLowerCase() != "hidden") &&
WebForm_IsFocusableTag(tagName) &&
WebForm_IsInVisibleContainer(element)
);
}
function WebForm_IsFocusableTag(tagName) {
return (tagName == "input" ||
tagName == "textarea" ||
tagName == "select" ||
tagName == "button" ||
tagName == "a");
}
function WebForm_IsInVisibleContainer(ctrl) {
var current = ctrl;
while((typeof(current) != "undefined") && (current != null)) {
if (current.disabled ||
( typeof(current.style) != "undefined" &&
( ( typeof(current.style.display) != "undefined" &&
current.style.display == "none") ||
( typeof(current.style.visibility) != "undefined" &&
current.style.visibility == "hidden") ) ) ) {
return false;
}
if (typeof(current.parentNode) != "undefined" &&
current.parentNode != null &&
current.parentNode != current &&
current.parentNode.tagName.toLowerCase() != "body") {
current = current.parentNode;
}
else {
return true;
}
}
return true;
}

View File

@@ -0,0 +1,36 @@
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/GridView.js
function GridView() {
this.pageIndex = null;
this.sortExpression = null;
this.sortDirection = null;
this.dataKeys = null;
this.createPropertyString = GridView_createPropertyString;
this.setStateField = GridView_setStateValue;
this.getHiddenFieldContents = GridView_getHiddenFieldContents;
this.stateField = null;
this.panelElement = null;
this.callback = null;
}
function GridView_createPropertyString() {
return createPropertyStringFromValues_GridView(this.pageIndex, this.sortDirection, this.sortExpression, this.dataKeys);
}
function GridView_setStateValue() {
this.stateField.value = this.createPropertyString();
}
function GridView_OnCallback (result, context) {
var value = new String(result);
var valsArray = value.split("|");
var innerHtml = valsArray[4];
for (var i = 5; i < valsArray.length; i++) {
innerHtml += "|" + valsArray[i];
}
context.panelElement.innerHTML = innerHtml;
context.stateField.value = createPropertyStringFromValues_GridView(valsArray[0], valsArray[1], valsArray[2], valsArray[3]);
}
function GridView_getHiddenFieldContents(arg) {
return arg + "|" + this.stateField.value;
}
function createPropertyStringFromValues_GridView(pageIndex, sortDirection, sortExpression, dataKeys) {
var value = new Array(pageIndex, sortDirection, sortExpression, dataKeys);
return value.join("|");
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjaxTimer.js
//----------------------------------------------------------
// Copyright (C) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------
// MicrosoftAjaxTimer.js
Type._registerScript("Timer.js",["MicrosoftAjaxComponentModel.js"]);Sys.UI._Timer=function(a){Sys.UI._Timer.initializeBase(this,[a]);this._interval=60000;this._enabled=true;this._postbackPending=false;this._raiseTickDelegate=null;this._endRequestHandlerDelegate=null;this._timer=null;this._pageRequestManager=null;this._uniqueID=null};Sys.UI._Timer.prototype={get_enabled:function(){return this._enabled},set_enabled:function(a){this._enabled=a},get_interval:function(){return this._interval},set_interval:function(a){this._interval=a},get_uniqueID:function(){return this._uniqueID},set_uniqueID:function(a){this._uniqueID=a},dispose:function(){this._stopTimer();if(this._pageRequestManager!==null)this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);Sys.UI._Timer.callBaseMethod(this,"dispose")},_doPostback:function(){__doPostBack(this.get_uniqueID(),"")},_handleEndRequest:function(c,b){var a=b.get_dataItems()[this.get_id()];if(a)this._update(a[0],a[1]);if(this._postbackPending===true&&this._pageRequestManager!==null&&this._pageRequestManager.get_isInAsyncPostBack()===false){this._postbackPending=false;this._doPostback()}},initialize:function(){Sys.UI._Timer.callBaseMethod(this,"initialize");this._raiseTickDelegate=Function.createDelegate(this,this._raiseTick);this._endRequestHandlerDelegate=Function.createDelegate(this,this._handleEndRequest);if(Sys.WebForms&&Sys.WebForms.PageRequestManager)this._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();if(this._pageRequestManager!==null)this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);if(this.get_enabled())this._startTimer()},_raiseTick:function(){this._startTimer();if(this._pageRequestManager===null||!this._pageRequestManager.get_isInAsyncPostBack()){this._doPostback();this._postbackPending=false}else this._postbackPending=true},_startTimer:function(){this._timer=window.setTimeout(Function.createDelegate(this,this._raiseTick),this.get_interval())},_stopTimer:function(){if(this._timer!==null){window.clearTimeout(this._timer);this._timer=null}},_update:function(c,b){var a=!this.get_enabled(),d=this.get_interval()!==b;if(!a&&(!c||d)){this._stopTimer();a=true}this.set_enabled(c);this.set_interval(b);if(this.get_enabled()&&a)this._startTimer()}};Sys.UI._Timer.registerClass("Sys.UI._Timer",Sys.UI.Control);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjaxWebServices.js
//----------------------------------------------------------
// Copyright (C) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------
// MicrosoftAjaxWebServices.js
Type._registerScript("MicrosoftAjaxWebServices.js",["MicrosoftAjaxNetwork.js"]);Type.registerNamespace("Sys.Net");Sys.Net.WebServiceProxy=function(){};Sys.Net.WebServiceProxy.prototype={get_timeout:function(){return this._timeout||0},set_timeout:function(a){if(a<0)throw Error.argumentOutOfRange("value",a,Sys.Res.invalidTimeout);this._timeout=a},get_defaultUserContext:function(){return typeof this._userContext==="undefined"?null:this._userContext},set_defaultUserContext:function(a){this._userContext=a},get_defaultSucceededCallback:function(){return this._succeeded||null},set_defaultSucceededCallback:function(a){this._succeeded=a},get_defaultFailedCallback:function(){return this._failed||null},set_defaultFailedCallback:function(a){this._failed=a},get_enableJsonp:function(){return !!this._jsonp},set_enableJsonp:function(a){this._jsonp=a},get_path:function(){return this._path||null},set_path:function(a){this._path=a},get_jsonpCallbackParameter:function(){return this._callbackParameter||"callback"},set_jsonpCallbackParameter:function(a){this._callbackParameter=a},_invoke:function(d,e,g,f,c,b,a){c=c||this.get_defaultSucceededCallback();b=b||this.get_defaultFailedCallback();if(a===null||typeof a==="undefined")a=this.get_defaultUserContext();return Sys.Net.WebServiceProxy.invoke(d,e,g,f,c,b,a,this.get_timeout(),this.get_enableJsonp(),this.get_jsonpCallbackParameter())}};Sys.Net.WebServiceProxy.registerClass("Sys.Net.WebServiceProxy");Sys.Net.WebServiceProxy.invoke=function(q,a,m,l,j,b,g,e,w,p){var i=w!==false?Sys.Net.WebServiceProxy._xdomain.exec(q):null,c,n=i&&i.length===3&&(i[1]!==location.protocol||i[2]!==location.host);m=n||m;if(n){p=p||"callback";c="_jsonp"+Sys._jsonp++}if(!l)l={};var r=l;if(!m||!r)r={};var s,h,f=null,k,o=null,u=Sys.Net.WebRequest._createUrl(a?q+"/"+encodeURIComponent(a):q,r,n?p+"=Sys."+c:null);if(n){s=document.createElement("script");s.src=u;k=new Sys._ScriptLoaderTask(s,function(d,b){if(!b||c)t({Message:String.format(Sys.Res.webServiceFailedNoMsg,a)},-1)});function v(){if(f===null)return;f=null;h=new Sys.Net.WebServiceError(true,String.format(Sys.Res.webServiceTimedOut,a));k.dispose();delete Sys[c];if(b)b(h,g,a)}function t(d,e){if(f!==null){window.clearTimeout(f);f=null}k.dispose();delete Sys[c];c=null;if(typeof e!=="undefined"&&e!==200){if(b){h=new Sys.Net.WebServiceError(false,d.Message||String.format(Sys.Res.webServiceFailedNoMsg,a),d.StackTrace||null,d.ExceptionType||null,d);h._statusCode=e;b(h,g,a)}}else if(j)j(d,g,a)}Sys[c]=t;e=e||Sys.Net.WebRequestManager.get_defaultTimeout();if(e>0)f=window.setTimeout(v,e);k.execute();return null}var d=new Sys.Net.WebRequest;d.set_url(u);d.get_headers()["Content-Type"]="application/json; charset=utf-8";if(!m){o=Sys.Serialization.JavaScriptSerializer.serialize(l);if(o==="{}")o=""}d.set_body(o);d.add_completed(x);if(e&&e>0)d.set_timeout(e);d.invoke();function x(d){if(d.get_responseAvailable()){var f=d.get_statusCode(),c=null;try{var e=d.getResponseHeader("Content-Type");if(e.startsWith("application/json"))c=d.get_object();else if(e.startsWith("text/xml"))c=d.get_xml();else c=d.get_responseData()}catch(m){}var k=d.getResponseHeader("jsonerror"),h=k==="true";if(h){if(c)c=new Sys.Net.WebServiceError(false,c.Message,c.StackTrace,c.ExceptionType,c)}else if(e.startsWith("application/json"))c=!c||typeof c.d==="undefined"?c:c.d;if(f<200||f>=300||h){if(b){if(!c||!h)c=new Sys.Net.WebServiceError(false,String.format(Sys.Res.webServiceFailedNoMsg,a));c._statusCode=f;b(c,g,a)}}else if(j)j(c,g,a)}else{var i;if(d.get_timedOut())i=String.format(Sys.Res.webServiceTimedOut,a);else i=String.format(Sys.Res.webServiceFailedNoMsg,a);if(b)b(new Sys.Net.WebServiceError(d.get_timedOut(),i,"",""),g,a)}}return d};Sys.Net.WebServiceProxy._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};Sys._jsonp=0;Sys.Net.WebServiceProxy._xdomain=/^\s*([a-zA-Z0-9\+\-\.]+\:)\/\/([^?#\/]+)/;Sys.Net.WebServiceError=function(d,e,c,a,b){this._timedOut=d;this._message=e;this._stackTrace=c;this._exceptionType=a;this._errorObject=b;this._statusCode=-1};Sys.Net.WebServiceError.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace||""},get_exceptionType:function(){return this._exceptionType||""},get_errorObject:function(){return this._errorObject||null}};Sys.Net.WebServiceError.registerClass("Sys.Net.WebServiceError");

View File

@@ -0,0 +1,898 @@
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/Menu.js
var __rootMenuItem;
var __menuInterval;
var __scrollPanel;
var __disappearAfter = 500;
function Menu_ClearInterval() {
if (__menuInterval) {
window.clearInterval(__menuInterval);
}
}
function Menu_Collapse(item) {
Menu_SetRoot(item);
if (__rootMenuItem) {
Menu_ClearInterval();
if (__disappearAfter >= 0) {
__menuInterval = window.setInterval("Menu_HideItems()", __disappearAfter);
}
}
}
function Menu_Expand(item, horizontalOffset, verticalOffset, hideScrollers) {
Menu_ClearInterval();
var tr = item.parentNode.parentNode.parentNode.parentNode.parentNode;
var horizontal = true;
if (!tr.id) {
horizontal = false;
tr = tr.parentNode;
}
var child = Menu_FindSubMenu(item);
if (child) {
var data = Menu_GetData(item);
if (!data) {
return null;
}
child.rel = tr.id;
child.x = horizontalOffset;
child.y = verticalOffset;
if (horizontal) child.pos = "bottom";
PopOut_Show(child.id, hideScrollers, data);
}
Menu_SetRoot(item);
if (child) {
if (!document.body.__oldOnClick && document.body.onclick) {
document.body.__oldOnClick = document.body.onclick;
}
if (__rootMenuItem) {
document.body.onclick = Menu_HideItems;
}
}
Menu_ResetSiblings(tr);
return child;
}
function Menu_FindMenu(item) {
if (item && item.menu) return item.menu;
var tr = item.parentNode.parentNode.parentNode.parentNode.parentNode;
if (!tr.id) {
tr = tr.parentNode;
}
for (var i = tr.id.length - 1; i >= 0; i--) {
if (tr.id.charAt(i) < '0' || tr.id.charAt(i) > '9') {
var menu = WebForm_GetElementById(tr.id.substr(0, i));
if (menu) {
item.menu = menu;
return menu;
}
}
}
return null;
}
function Menu_FindNext(item) {
var a = WebForm_GetElementByTagName(item, "A");
var parent = Menu_FindParentContainer(item);
var first = null;
if (parent) {
var links = WebForm_GetElementsByTagName(parent, "A");
var match = false;
for (var i = 0; i < links.length; i++) {
var link = links[i];
if (Menu_IsSelectable(link)) {
if (Menu_FindParentContainer(link) == parent) {
if (match) {
return link;
}
else if (!first) {
first = link;
}
}
if (!match && link == a) {
match = true;
}
}
}
}
return first;
}
function Menu_FindParentContainer(item) {
if (item.menu_ParentContainerCache) return item.menu_ParentContainerCache;
var a = (item.tagName.toLowerCase() == "a") ? item : WebForm_GetElementByTagName(item, "A");
var menu = Menu_FindMenu(a);
if (menu) {
var parent = item;
while (parent && parent.tagName &&
parent.id != menu.id &&
parent.tagName.toLowerCase() != "div") {
parent = parent.parentNode;
}
item.menu_ParentContainerCache = parent;
return parent;
}
}
function Menu_FindParentItem(item) {
var parentContainer = Menu_FindParentContainer(item);
var parentContainerID = parentContainer.id;
var len = parentContainerID.length;
if (parentContainerID && parentContainerID.substr(len - 5) == "Items") {
var parentItemID = parentContainerID.substr(0, len - 5);
return WebForm_GetElementById(parentItemID);
}
return null;
}
function Menu_FindPrevious(item) {
var a = WebForm_GetElementByTagName(item, "A");
var parent = Menu_FindParentContainer(item);
var last = null;
if (parent) {
var links = WebForm_GetElementsByTagName(parent, "A");
for (var i = 0; i < links.length; i++) {
var link = links[i];
if (Menu_IsSelectable(link)) {
if (link == a && last) {
return last;
}
if (Menu_FindParentContainer(link) == parent) {
last = link;
}
}
}
}
return last;
}
function Menu_FindSubMenu(item) {
var tr = item.parentNode.parentNode.parentNode.parentNode.parentNode;
if (!tr.id) {
tr=tr.parentNode;
}
return WebForm_GetElementById(tr.id + "Items");
}
function Menu_Focus(item) {
if (item && item.focus) {
var pos = WebForm_GetElementPosition(item);
var parentContainer = Menu_FindParentContainer(item);
if (!parentContainer.offset) {
parentContainer.offset = 0;
}
var posParent = WebForm_GetElementPosition(parentContainer);
var delta;
if (pos.y + pos.height > posParent.y + parentContainer.offset + parentContainer.clippedHeight) {
delta = pos.y + pos.height - posParent.y - parentContainer.offset - parentContainer.clippedHeight;
PopOut_Scroll(parentContainer, delta);
}
else if (pos.y < posParent.y + parentContainer.offset) {
delta = posParent.y + parentContainer.offset - pos.y;
PopOut_Scroll(parentContainer, -delta);
}
PopOut_HideScrollers(parentContainer);
item.focus();
}
}
function Menu_GetData(item) {
if (!item.data) {
var a = (item.tagName.toLowerCase() == "a" ? item : WebForm_GetElementByTagName(item, "a"));
var menu = Menu_FindMenu(a);
try {
item.data = eval(menu.id + "_Data");
}
catch(e) {}
}
return item.data;
}
function Menu_HideItems(items) {
if (document.body.__oldOnClick) {
document.body.onclick = document.body.__oldOnClick;
document.body.__oldOnClick = null;
}
Menu_ClearInterval();
if (!items || ((typeof(items.tagName) == "undefined") && (items instanceof Event))) {
items = __rootMenuItem;
}
var table = items;
if ((typeof(table) == "undefined") || (table == null) || !table.tagName || (table.tagName.toLowerCase() != "table")) {
table = WebForm_GetElementByTagName(table, "TABLE");
}
if ((typeof(table) == "undefined") || (table == null) || !table.tagName || (table.tagName.toLowerCase() != "table")) {
return;
}
var rows = table.rows ? table.rows : table.firstChild.rows;
var isVertical = false;
for (var r = 0; r < rows.length; r++) {
if (rows[r].id) {
isVertical = true;
break;
}
}
var i, child, nextLevel;
if (isVertical) {
for(i = 0; i < rows.length; i++) {
if (rows[i].id) {
child = WebForm_GetElementById(rows[i].id + "Items");
if (child) {
Menu_HideItems(child);
}
}
else if (rows[i].cells[0]) {
nextLevel = WebForm_GetElementByTagName(rows[i].cells[0], "TABLE");
if (nextLevel) {
Menu_HideItems(nextLevel);
}
}
}
}
else if (rows[0]) {
for(i = 0; i < rows[0].cells.length; i++) {
if (rows[0].cells[i].id) {
child = WebForm_GetElementById(rows[0].cells[i].id + "Items");
if (child) {
Menu_HideItems(child);
}
}
else {
nextLevel = WebForm_GetElementByTagName(rows[0].cells[i], "TABLE");
if (nextLevel) {
Menu_HideItems(rows[0].cells[i].firstChild);
}
}
}
}
if (items && items.id) {
PopOut_Hide(items.id);
}
}
function Menu_HoverDisabled(item) {
var node = (item.tagName.toLowerCase() == "td") ?
item:
item.cells[0];
var data = Menu_GetData(item);
if (!data) return;
node = WebForm_GetElementByTagName(node, "table").rows[0].cells[0].childNodes[0];
if (data.disappearAfter >= 200) {
__disappearAfter = data.disappearAfter;
}
Menu_Expand(node, data.horizontalOffset, data.verticalOffset);
}
function Menu_HoverDynamic(item) {
var node = (item.tagName.toLowerCase() == "td") ?
item:
item.cells[0];
var data = Menu_GetData(item);
if (!data) return;
var nodeTable = WebForm_GetElementByTagName(node, "table");
if (data.hoverClass) {
nodeTable.hoverClass = data.hoverClass;
WebForm_AppendToClassName(nodeTable, data.hoverClass);
}
node = nodeTable.rows[0].cells[0].childNodes[0];
if (data.hoverHyperLinkClass) {
node.hoverHyperLinkClass = data.hoverHyperLinkClass;
WebForm_AppendToClassName(node, data.hoverHyperLinkClass);
}
if (data.disappearAfter >= 200) {
__disappearAfter = data.disappearAfter;
}
Menu_Expand(node, data.horizontalOffset, data.verticalOffset);
}
function Menu_HoverRoot(item) {
var node = (item.tagName.toLowerCase() == "td") ?
item:
item.cells[0];
var data = Menu_GetData(item);
if (!data) {
return null;
}
var nodeTable = WebForm_GetElementByTagName(node, "table");
if (data.staticHoverClass) {
nodeTable.hoverClass = data.staticHoverClass;
WebForm_AppendToClassName(nodeTable, data.staticHoverClass);
}
node = nodeTable.rows[0].cells[0].childNodes[0];
if (data.staticHoverHyperLinkClass) {
node.hoverHyperLinkClass = data.staticHoverHyperLinkClass;
WebForm_AppendToClassName(node, data.staticHoverHyperLinkClass);
}
return node;
}
function Menu_HoverStatic(item) {
var node = Menu_HoverRoot(item);
var data = Menu_GetData(item);
if (!data) return;
__disappearAfter = data.disappearAfter;
Menu_Expand(node, data.horizontalOffset, data.verticalOffset);
}
function Menu_IsHorizontal(item) {
if (item) {
var a = ((item.tagName && (item.tagName.toLowerCase == "a")) ? item : WebForm_GetElementByTagName(item, "A"));
if (!a) {
return false;
}
var td = a.parentNode.parentNode.parentNode.parentNode.parentNode;
if (td.id) {
return true;
}
}
return false;
}
function Menu_IsSelectable(link) {
return (link && link.href)
}
function Menu_Key(item) {
var event;
if (item.currentTarget) {
event = item;
item = event.currentTarget;
}
else {
event = window.event;
}
var key = (event ? event.keyCode : -1);
var data = Menu_GetData(item);
if (!data) return;
var horizontal = Menu_IsHorizontal(item);
var a = WebForm_GetElementByTagName(item, "A");
var nextItem, parentItem, previousItem;
if ((!horizontal && key == 38) || (horizontal && key == 37)) {
previousItem = Menu_FindPrevious(item);
while (previousItem && previousItem.disabled) {
previousItem = Menu_FindPrevious(previousItem);
}
if (previousItem) {
Menu_Focus(previousItem);
Menu_Expand(previousItem, data.horizontalOffset, data.verticalOffset, true);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return;
}
}
if ((!horizontal && key == 40) || (horizontal && key == 39)) {
if (horizontal) {
var subMenu = Menu_FindSubMenu(a);
if (subMenu && subMenu.style && subMenu.style.visibility &&
subMenu.style.visibility.toLowerCase() == "hidden") {
Menu_Expand(a, data.horizontalOffset, data.verticalOffset, true);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return;
}
}
nextItem = Menu_FindNext(item);
while (nextItem && nextItem.disabled) {
nextItem = Menu_FindNext(nextItem);
}
if (nextItem) {
Menu_Focus(nextItem);
Menu_Expand(nextItem, data.horizontalOffset, data.verticalOffset, true);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return;
}
}
if ((!horizontal && key == 39) || (horizontal && key == 40)) {
var children = Menu_Expand(a, data.horizontalOffset, data.verticalOffset, true);
if (children) {
var firstChild;
children = WebForm_GetElementsByTagName(children, "A");
for (var i = 0; i < children.length; i++) {
if (!children[i].disabled && Menu_IsSelectable(children[i])) {
firstChild = children[i];
break;
}
}
if (firstChild) {
Menu_Focus(firstChild);
Menu_Expand(firstChild, data.horizontalOffset, data.verticalOffset, true);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return;
}
}
else {
parentItem = Menu_FindParentItem(item);
while (parentItem && !Menu_IsHorizontal(parentItem)) {
parentItem = Menu_FindParentItem(parentItem);
}
if (parentItem) {
nextItem = Menu_FindNext(parentItem);
while (nextItem && nextItem.disabled) {
nextItem = Menu_FindNext(nextItem);
}
if (nextItem) {
Menu_Focus(nextItem);
Menu_Expand(nextItem, data.horizontalOffset, data.verticalOffset, true);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return;
}
}
}
}
if ((!horizontal && key == 37) || (horizontal && key == 38)) {
parentItem = Menu_FindParentItem(item);
if (parentItem) {
if (Menu_IsHorizontal(parentItem)) {
previousItem = Menu_FindPrevious(parentItem);
while (previousItem && previousItem.disabled) {
previousItem = Menu_FindPrevious(previousItem);
}
if (previousItem) {
Menu_Focus(previousItem);
Menu_Expand(previousItem, data.horizontalOffset, data.verticalOffset, true);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return;
}
}
var parentA = WebForm_GetElementByTagName(parentItem, "A");
if (parentA) {
Menu_Focus(parentA);
}
Menu_ResetSiblings(parentItem);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return;
}
}
if (key == 27) {
Menu_HideItems();
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return;
}
}
function Menu_ResetSiblings(item) {
var table = (item.tagName.toLowerCase() == "td") ?
item.parentNode.parentNode.parentNode :
item.parentNode.parentNode;
var isVertical = false;
for (var r = 0; r < table.rows.length; r++) {
if (table.rows[r].id) {
isVertical = true;
break;
}
}
var i, child, childNode;
if (isVertical) {
for(i = 0; i < table.rows.length; i++) {
childNode = table.rows[i];
if (childNode != item) {
child = WebForm_GetElementById(childNode.id + "Items");
if (child) {
Menu_HideItems(child);
}
}
}
}
else {
for(i = 0; i < table.rows[0].cells.length; i++) {
childNode = table.rows[0].cells[i];
if (childNode != item) {
child = WebForm_GetElementById(childNode.id + "Items");
if (child) {
Menu_HideItems(child);
}
}
}
}
Menu_ResetTopMenus(table, table, 0, true);
}
function Menu_ResetTopMenus(table, doNotReset, level, up) {
var i, child, childNode;
if (up && table.id == "") {
var parentTable = table.parentNode.parentNode.parentNode.parentNode;
if (parentTable.tagName.toLowerCase() == "table") {
Menu_ResetTopMenus(parentTable, doNotReset, level + 1, true);
}
}
else {
if (level == 0 && table != doNotReset) {
if (table.rows[0].id) {
for(i = 0; i < table.rows.length; i++) {
childNode = table.rows[i];
child = WebForm_GetElementById(childNode.id + "Items");
if (child) {
Menu_HideItems(child);
}
}
}
else {
for(i = 0; i < table.rows[0].cells.length; i++) {
childNode = table.rows[0].cells[i];
child = WebForm_GetElementById(childNode.id + "Items");
if (child) {
Menu_HideItems(child);
}
}
}
}
else if (level > 0) {
for (i = 0; i < table.rows.length; i++) {
for (var j = 0; j < table.rows[i].cells.length; j++) {
var subTable = table.rows[i].cells[j].firstChild;
if (subTable && subTable.tagName.toLowerCase() == "table") {
Menu_ResetTopMenus(subTable, doNotReset, level - 1, false);
}
}
}
}
}
}
function Menu_RestoreInterval() {
if (__menuInterval && __rootMenuItem) {
Menu_ClearInterval();
__menuInterval = window.setInterval("Menu_HideItems()", __disappearAfter);
}
}
function Menu_SetRoot(item) {
var newRoot = Menu_FindMenu(item);
if (newRoot) {
if (__rootMenuItem && __rootMenuItem != newRoot) {
Menu_HideItems();
}
__rootMenuItem = newRoot;
}
}
function Menu_Unhover(item) {
var node = (item.tagName.toLowerCase() == "td") ?
item:
item.cells[0];
var nodeTable = WebForm_GetElementByTagName(node, "table");
if (nodeTable.hoverClass) {
WebForm_RemoveClassName(nodeTable, nodeTable.hoverClass);
}
node = nodeTable.rows[0].cells[0].childNodes[0];
if (node.hoverHyperLinkClass) {
WebForm_RemoveClassName(node, node.hoverHyperLinkClass);
}
Menu_Collapse(node);
}
function PopOut_Clip(element, y, height) {
if (element && element.style) {
element.style.clip = "rect(" + y + "px auto " + (y + height) + "px auto)";
element.style.overflow = "hidden";
}
}
function PopOut_Down(scroller) {
Menu_ClearInterval();
var panel;
if (scroller) {
panel = scroller.parentNode
}
else {
panel = __scrollPanel;
}
if (panel && ((panel.offset + panel.clippedHeight) < panel.physicalHeight)) {
PopOut_Scroll(panel, 2)
__scrollPanel = panel;
PopOut_ShowScrollers(panel);
PopOut_Stop();
__scrollPanel.interval = window.setInterval("PopOut_Down()", 8);
}
else {
PopOut_ShowScrollers(panel);
}
}
function PopOut_Hide(panelId) {
var panel = WebForm_GetElementById(panelId);
if (panel && panel.tagName.toLowerCase() == "div") {
panel.style.visibility = "hidden";
panel.style.display = "none";
panel.offset = 0;
panel.scrollTop = 0;
var table = WebForm_GetElementByTagName(panel, "TABLE");
if (table) {
WebForm_SetElementY(table, 0);
}
if (window.navigator && window.navigator.appName == "Microsoft Internet Explorer" &&
!window.opera) {
var childFrameId = panel.id + "_MenuIFrame";
var childFrame = WebForm_GetElementById(childFrameId);
if (childFrame) {
childFrame.style.display = "none";
}
}
}
}
function PopOut_HideScrollers(panel) {
if (panel && panel.style) {
var up = WebForm_GetElementById(panel.id + "Up");
var dn = WebForm_GetElementById(panel.id + "Dn");
if (up) {
up.style.visibility = "hidden";
up.style.display = "none";
}
if (dn) {
dn.style.visibility = "hidden";
dn.style.display = "none";
}
}
}
function PopOut_Position(panel, hideScrollers) {
if (window.opera) {
panel.parentNode.removeChild(panel);
document.forms[0].appendChild(panel);
}
var rel = WebForm_GetElementById(panel.rel);
var relTable = WebForm_GetElementByTagName(rel, "TABLE");
var relCoordinates = WebForm_GetElementPosition(relTable ? relTable : rel);
var panelCoordinates = WebForm_GetElementPosition(panel);
var panelHeight = ((typeof(panel.physicalHeight) != "undefined") && (panel.physicalHeight != null)) ?
panel.physicalHeight :
panelCoordinates.height;
panel.physicalHeight = panelHeight;
var panelParentCoordinates;
if (panel.offsetParent) {
panelParentCoordinates = WebForm_GetElementPosition(panel.offsetParent);
}
else {
panelParentCoordinates = new Object();
panelParentCoordinates.x = 0;
panelParentCoordinates.y = 0;
}
var overflowElement = WebForm_GetElementById("__overFlowElement");
if (!overflowElement) {
overflowElement = document.createElement("img");
overflowElement.id="__overFlowElement";
WebForm_SetElementWidth(overflowElement, 1);
document.body.appendChild(overflowElement);
}
WebForm_SetElementHeight(overflowElement, panelHeight + relCoordinates.y + parseInt(panel.y ? panel.y : 0));
overflowElement.style.visibility = "visible";
overflowElement.style.display = "inline";
var clientHeight = 0;
var clientWidth = 0;
if (window.innerHeight) {
clientHeight = window.innerHeight;
clientWidth = window.innerWidth;
}
else if (document.documentElement && document.documentElement.clientHeight) {
clientHeight = document.documentElement.clientHeight;
clientWidth = document.documentElement.clientWidth;
}
else if (document.body && document.body.clientHeight) {
clientHeight = document.body.clientHeight;
clientWidth = document.body.clientWidth;
}
var scrollTop = 0;
var scrollLeft = 0;
if (typeof(window.pageYOffset) != "undefined") {
scrollTop = window.pageYOffset;
scrollLeft = window.pageXOffset;
}
else if (document.documentElement && (typeof(document.documentElement.scrollTop) != "undefined")) {
scrollTop = document.documentElement.scrollTop;
scrollLeft = document.documentElement.scrollLeft;
}
else if (document.body && (typeof(document.body.scrollTop) != "undefined")) {
scrollTop = document.body.scrollTop;
scrollLeft = document.body.scrollLeft;
}
overflowElement.style.visibility = "hidden";
overflowElement.style.display = "none";
var bottomWindowBorder = clientHeight + scrollTop;
var rightWindowBorder = clientWidth + scrollLeft;
var position = panel.pos;
if ((typeof(position) == "undefined") || (position == null) || (position == "")) {
position = (WebForm_GetElementDir(rel) == "rtl" ? "middleleft" : "middleright");
}
position = position.toLowerCase();
var y = relCoordinates.y + parseInt(panel.y ? panel.y : 0) - panelParentCoordinates.y;
var borderParent = (rel && rel.parentNode && rel.parentNode.parentNode && rel.parentNode.parentNode.parentNode
&& rel.parentNode.parentNode.parentNode.tagName.toLowerCase() == "div") ?
rel.parentNode.parentNode.parentNode : null;
WebForm_SetElementY(panel, y);
PopOut_SetPanelHeight(panel, panelHeight, true);
var clip = false;
var overflow;
if (position.indexOf("top") != -1) {
y -= panelHeight;
WebForm_SetElementY(panel, y);
if (y < -panelParentCoordinates.y) {
y = -panelParentCoordinates.y;
WebForm_SetElementY(panel, y);
if (panelHeight > clientHeight - 2) {
clip = true;
PopOut_SetPanelHeight(panel, clientHeight - 2);
}
}
}
else {
if (position.indexOf("bottom") != -1) {
y += relCoordinates.height;
WebForm_SetElementY(panel, y);
}
overflow = y + panelParentCoordinates.y + panelHeight - bottomWindowBorder;
if (overflow > 0) {
y -= overflow;
WebForm_SetElementY(panel, y);
if (y < -panelParentCoordinates.y) {
y = 2 - panelParentCoordinates.y + scrollTop;
WebForm_SetElementY(panel, y);
clip = true;
PopOut_SetPanelHeight(panel, clientHeight - 2);
}
}
}
if (!clip) {
PopOut_SetPanelHeight(panel, panel.clippedHeight, true);
}
var panelParentOffsetY = 0;
if (panel.offsetParent) {
panelParentOffsetY = WebForm_GetElementPosition(panel.offsetParent).y;
}
var panelY = ((typeof(panel.originY) != "undefined") && (panel.originY != null)) ?
panel.originY :
y - panelParentOffsetY;
panel.originY = panelY;
if (!hideScrollers) {
PopOut_ShowScrollers(panel);
}
else {
PopOut_HideScrollers(panel);
}
var x = relCoordinates.x + parseInt(panel.x ? panel.x : 0) - panelParentCoordinates.x;
if (borderParent && borderParent.clientLeft) {
x += 2 * borderParent.clientLeft;
}
WebForm_SetElementX(panel, x);
if (position.indexOf("left") != -1) {
x -= panelCoordinates.width;
WebForm_SetElementX(panel, x);
if (x < -panelParentCoordinates.x) {
WebForm_SetElementX(panel, -panelParentCoordinates.x);
}
}
else {
if (position.indexOf("right") != -1) {
x += relCoordinates.width;
WebForm_SetElementX(panel, x);
}
overflow = x + panelParentCoordinates.x + panelCoordinates.width - rightWindowBorder;
if (overflow > 0) {
if (position.indexOf("bottom") == -1 && relCoordinates.x > panelCoordinates.width) {
x -= relCoordinates.width + panelCoordinates.width;
}
else {
x -= overflow;
}
WebForm_SetElementX(panel, x);
if (x < -panelParentCoordinates.x) {
WebForm_SetElementX(panel, -panelParentCoordinates.x);
}
}
}
}
function PopOut_Scroll(panel, offsetDelta) {
var table = WebForm_GetElementByTagName(panel, "TABLE");
if (!table) return;
table.style.position = "relative";
var tableY = (table.style.top ? parseInt(table.style.top) : 0);
panel.offset += offsetDelta;
WebForm_SetElementY(table, tableY - offsetDelta);
}
function PopOut_SetPanelHeight(element, height, doNotClip) {
if (element && element.style) {
var size = WebForm_GetElementPosition(element);
element.physicalWidth = size.width;
element.clippedHeight = height;
WebForm_SetElementHeight(element, height - (element.clientTop ? (2 * element.clientTop) : 0));
if (doNotClip && element.style) {
element.style.clip = "rect(auto auto auto auto)";
}
else {
PopOut_Clip(element, 0, height);
}
}
}
function PopOut_Show(panelId, hideScrollers, data) {
var panel = WebForm_GetElementById(panelId);
if (panel && panel.tagName.toLowerCase() == "div") {
panel.style.visibility = "visible";
panel.style.display = "inline";
if (!panel.offset || hideScrollers) {
panel.scrollTop = 0;
panel.offset = 0;
var table = WebForm_GetElementByTagName(panel, "TABLE");
if (table) {
WebForm_SetElementY(table, 0);
}
}
PopOut_Position(panel, hideScrollers);
var z = 1;
var isIE = window.navigator && window.navigator.appName == "Microsoft Internet Explorer" && !window.opera;
if (isIE && data) {
var childFrameId = panel.id + "_MenuIFrame";
var childFrame = WebForm_GetElementById(childFrameId);
var parent = panel.offsetParent;
if (!childFrame) {
childFrame = document.createElement("iframe");
childFrame.id = childFrameId;
childFrame.src = (data.iframeUrl ? data.iframeUrl : "about:blank");
childFrame.style.position = "absolute";
childFrame.style.display = "none";
childFrame.scrolling = "no";
childFrame.frameBorder = "0";
if (parent.tagName.toLowerCase() == "html") {
document.body.appendChild(childFrame);
}
else {
parent.appendChild(childFrame);
}
}
var pos = WebForm_GetElementPosition(panel);
var parentPos = WebForm_GetElementPosition(parent);
WebForm_SetElementX(childFrame, pos.x - parentPos.x);
WebForm_SetElementY(childFrame, pos.y - parentPos.y);
WebForm_SetElementWidth(childFrame, pos.width);
WebForm_SetElementHeight(childFrame, pos.height);
childFrame.style.display = "block";
if (panel.currentStyle && panel.currentStyle.zIndex && panel.currentStyle.zIndex != "auto") {
z = panel.currentStyle.zIndex;
}
else if (panel.style.zIndex) {
z = panel.style.zIndex;
}
}
panel.style.zIndex = z;
}
}
function PopOut_ShowScrollers(panel) {
if (panel && panel.style) {
var up = WebForm_GetElementById(panel.id + "Up");
var dn = WebForm_GetElementById(panel.id + "Dn");
var cnt = 0;
if (up && dn) {
if (panel.offset && panel.offset > 0) {
up.style.visibility = "visible";
up.style.display = "inline";
cnt++;
if (panel.clientWidth) {
WebForm_SetElementWidth(up, panel.clientWidth
- (up.clientLeft ? (2 * up.clientLeft) : 0));
}
WebForm_SetElementY(up, 0);
}
else {
up.style.visibility = "hidden";
up.style.display = "none";
}
if (panel.offset + panel.clippedHeight + 2 <= panel.physicalHeight) {
dn.style.visibility = "visible";
dn.style.display = "inline";
cnt++;
if (panel.clientWidth) {
WebForm_SetElementWidth(dn, panel.clientWidth
- (dn.clientLeft ? (2 * dn.clientLeft) : 0));
}
WebForm_SetElementY(dn, panel.clippedHeight - WebForm_GetElementPosition(dn).height
- (panel.clientTop ? (2 * panel.clientTop) : 0));
}
else {
dn.style.visibility = "hidden";
dn.style.display = "none";
}
if (cnt == 0) {
panel.style.clip = "rect(auto auto auto auto)";
}
}
}
}
function PopOut_Stop() {
if (__scrollPanel && __scrollPanel.interval) {
window.clearInterval(__scrollPanel.interval);
}
Menu_RestoreInterval();
}
function PopOut_Up(scroller) {
Menu_ClearInterval();
var panel;
if (scroller) {
panel = scroller.parentNode
}
else {
panel = __scrollPanel;
}
if (panel && panel.offset && panel.offset > 0) {
PopOut_Scroll(panel, -2);
__scrollPanel = panel;
PopOut_ShowScrollers(panel);
PopOut_Stop();
__scrollPanel.interval = window.setInterval("PopOut_Up()", 8);
}
}

View File

@@ -0,0 +1,697 @@
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/MenuStandards.js
if (!window.Sys) { window.Sys = {}; }
if (!Sys.WebForms) { Sys.WebForms = {}; }
Sys.WebForms.Menu = function(options) {
this.items = [];
this.depth = options.depth || 1;
this.parentMenuItem = options.parentMenuItem;
this.element = Sys.WebForms.Menu._domHelper.getElement(options.element);
if (this.element.tagName === 'DIV') {
var containerElement = this.element;
this.element = Sys.WebForms.Menu._domHelper.firstChild(containerElement);
this.element.tabIndex = options.tabIndex || 0;
options.element = containerElement;
options.menu = this;
this.container = new Sys.WebForms._MenuContainer(options);
Sys.WebForms.Menu._domHelper.setFloat(this.element, this.container.rightToLeft ? "right" : "left");
}
else {
this.container = options.container;
this.keyMap = options.keyMap;
}
Sys.WebForms.Menu._elementObjectMapper.map(this.element, this);
if (this.parentMenuItem && this.parentMenuItem.parentMenu) {
this.parentMenu = this.parentMenuItem.parentMenu;
this.rootMenu = this.parentMenu.rootMenu;
if (!this.element.id) {
this.element.id = (this.container.element.id || 'menu') + ':submenu:' + Sys.WebForms.Menu._elementObjectMapper._computedId;
}
if (this.depth > this.container.staticDisplayLevels) {
this.displayMode = "dynamic";
this.element.style.display = "none";
this.element.style.position = "absolute";
if (this.rootMenu && this.container.orientation === 'horizontal' && this.parentMenu.isStatic()) {
this.element.style.top = "100%";
if (this.container.rightToLeft) {
this.element.style.right = "0px";
}
else {
this.element.style.left = "0px";
}
}
else {
this.element.style.top = "0px";
if (this.container.rightToLeft) {
this.element.style.right = "100%";
}
else {
this.element.style.left = "100%";
}
}
if (this.container.rightToLeft) {
this.keyMap = Sys.WebForms.Menu._keyboardMapping.verticalRtl;
}
else {
this.keyMap = Sys.WebForms.Menu._keyboardMapping.vertical;
}
}
else {
this.displayMode = "static";
this.element.style.display = "block";
if (this.container.orientation === 'horizontal') {
Sys.WebForms.Menu._domHelper.setFloat(this.element, this.container.rightToLeft ? "right" : "left");
}
}
}
Sys.WebForms.Menu._domHelper.appendCssClass(this.element, this.displayMode);
var children = this.element.childNodes;
var count = children.length;
for (var i = 0; i < count; i++) {
var node = children[i];
if (node.nodeType !== 1) {
continue;
}
var topLevelMenuItem = null;
if (this.parentMenuItem) {
topLevelMenuItem = this.parentMenuItem.topLevelMenuItem;
}
var menuItem = new Sys.WebForms.MenuItem(this, node, topLevelMenuItem);
var previousMenuItem = this.items[this.items.length - 1];
if (previousMenuItem) {
menuItem.previousSibling = previousMenuItem;
previousMenuItem.nextSibling = menuItem;
}
this.items[this.items.length] = menuItem;
}
};
Sys.WebForms.Menu.prototype = {
blur: function() { if (this.container) this.container.blur(); },
collapse: function() {
this.each(function(menuItem) {
menuItem.hover(false);
menuItem.blur();
var childMenu = menuItem.childMenu;
if (childMenu) {
childMenu.collapse();
}
});
this.hide();
},
doDispose: function() { this.each(function(item) { item.doDispose(); }); },
each: function(fn) {
var count = this.items.length;
for (var i = 0; i < count; i++) {
fn(this.items[i]);
}
},
firstChild: function() { return this.items[0]; },
focus: function() { if (this.container) this.container.focus(); },
get_displayed: function() { return this.element.style.display !== 'none'; },
get_focused: function() {
if (this.container) {
return this.container.focused;
}
return false;
},
handleKeyPress: function(keyCode) {
if (this.keyMap.contains(keyCode)) {
if (this.container.focusedMenuItem) {
this.container.focusedMenuItem.navigate(keyCode);
return;
}
var firstChild = this.firstChild();
if (firstChild) {
this.container.navigateTo(firstChild);
}
}
},
hide: function() {
if (!this.get_displayed()) {
return;
}
this.each(function(item) {
if (item.childMenu) {
item.childMenu.hide();
}
});
if (!this.isRoot()) {
if (this.get_focused()) {
this.container.navigateTo(this.parentMenuItem);
}
this.element.style.display = 'none';
}
},
isRoot: function() { return this.rootMenu === this; },
isStatic: function() { return this.displayMode === 'static'; },
lastChild: function() { return this.items[this.items.length - 1]; },
show: function() { this.element.style.display = 'block'; }
};
if (Sys.WebForms.Menu.registerClass) {
Sys.WebForms.Menu.registerClass('Sys.WebForms.Menu');
}
Sys.WebForms.MenuItem = function(parentMenu, listElement, topLevelMenuItem) {
this.keyMap = parentMenu.keyMap;
this.parentMenu = parentMenu;
this.container = parentMenu.container;
this.element = listElement;
this.topLevelMenuItem = topLevelMenuItem || this;
this._anchor = Sys.WebForms.Menu._domHelper.firstChild(listElement);
while (this._anchor && this._anchor.tagName !== 'A') {
this._anchor = Sys.WebForms.Menu._domHelper.nextSibling(this._anchor);
}
if (this._anchor) {
this._anchor.tabIndex = -1;
var subMenu = this._anchor;
while (subMenu && subMenu.tagName !== 'UL') {
subMenu = Sys.WebForms.Menu._domHelper.nextSibling(subMenu);
}
if (subMenu) {
this.childMenu = new Sys.WebForms.Menu({ element: subMenu, parentMenuItem: this, depth: parentMenu.depth + 1, container: this.container, keyMap: this.keyMap });
if (!this.childMenu.isStatic()) {
Sys.WebForms.Menu._domHelper.appendCssClass(this.element, 'has-popup');
Sys.WebForms.Menu._domHelper.appendAttributeValue(this.element, 'aria-haspopup', this.childMenu.element.id);
}
}
}
Sys.WebForms.Menu._elementObjectMapper.map(listElement, this);
Sys.WebForms.Menu._domHelper.appendAttributeValue(listElement, 'role', 'menuitem');
Sys.WebForms.Menu._domHelper.appendCssClass(listElement, parentMenu.displayMode);
if (this._anchor) {
Sys.WebForms.Menu._domHelper.appendCssClass(this._anchor, parentMenu.displayMode);
}
this.element.style.position = "relative";
if (this.parentMenu.depth == 1 && this.container.orientation == 'horizontal') {
Sys.WebForms.Menu._domHelper.setFloat(this.element, this.container.rightToLeft ? "right" : "left");
}
if (!this.container.disabled) {
Sys.WebForms.Menu._domHelper.addEvent(this.element, 'mouseover', Sys.WebForms.MenuItem._onmouseover);
Sys.WebForms.Menu._domHelper.addEvent(this.element, 'mouseout', Sys.WebForms.MenuItem._onmouseout);
}
};
Sys.WebForms.MenuItem.prototype = {
applyUp: function(fn, condition) {
condition = condition || function(menuItem) { return menuItem; };
var menuItem = this;
var lastMenuItem = null;
while (condition(menuItem)) {
fn(menuItem);
lastMenuItem = menuItem;
menuItem = menuItem.parentMenu.parentMenuItem;
}
return lastMenuItem;
},
blur: function() { this.setTabIndex(-1); },
doDispose: function() {
Sys.WebForms.Menu._domHelper.removeEvent(this.element, 'mouseover', Sys.WebForms.MenuItem._onmouseover);
Sys.WebForms.Menu._domHelper.removeEvent(this.element, 'mouseout', Sys.WebForms.MenuItem._onmouseout);
if (this.childMenu) {
this.childMenu.doDispose();
}
},
focus: function() {
if (!this.parentMenu.get_displayed()) {
this.parentMenu.show();
}
this.setTabIndex(0);
this.container.focused = true;
this._anchor.focus();
},
get_highlighted: function() { return /(^|\s)highlighted(\s|$)/.test(this._anchor.className); },
getTabIndex: function() { return this._anchor.tabIndex; },
highlight: function(highlighting) {
if (highlighting) {
this.applyUp(function(menuItem) {
menuItem.parentMenu.parentMenuItem.highlight(true);
},
function(menuItem) {
return !menuItem.parentMenu.isStatic() && menuItem.parentMenu.parentMenuItem;
}
);
Sys.WebForms.Menu._domHelper.appendCssClass(this._anchor, 'highlighted');
}
else {
Sys.WebForms.Menu._domHelper.removeCssClass(this._anchor, 'highlighted');
this.setTabIndex(-1);
}
},
hover: function(hovering) {
if (hovering) {
var currentHoveredItem = this.container.hoveredMenuItem;
if (currentHoveredItem) {
currentHoveredItem.hover(false);
}
var currentFocusedItem = this.container.focusedMenuItem;
if (currentFocusedItem && currentFocusedItem !== this) {
currentFocusedItem.hover(false);
}
this.applyUp(function(menuItem) {
if (menuItem.childMenu && !menuItem.childMenu.get_displayed()) {
menuItem.childMenu.show();
}
});
this.container.hoveredMenuItem = this;
this.highlight(true);
}
else {
var menuItem = this;
while (menuItem) {
menuItem.highlight(false);
if (menuItem.childMenu) {
if (!menuItem.childMenu.isStatic()) {
menuItem.childMenu.hide();
}
}
menuItem = menuItem.parentMenu.parentMenuItem;
}
}
},
isSiblingOf: function(menuItem) { return menuItem.parentMenu === this.parentMenu; },
mouseout: function() {
var menuItem = this,
id = this.container.pendingMouseoutId,
disappearAfter = this.container.disappearAfter;
if (id) {
window.clearTimeout(id);
}
if (disappearAfter > -1) {
this.container.pendingMouseoutId =
window.setTimeout(function() { menuItem.hover(false); }, disappearAfter);
}
},
mouseover: function() {
var id = this.container.pendingMouseoutId;
if (id) {
window.clearTimeout(id);
this.container.pendingMouseoutId = null;
}
this.hover(true);
if (this.container.menu.get_focused()) {
this.container.navigateTo(this);
}
},
navigate: function(keyCode) {
switch (this.keyMap[keyCode]) {
case this.keyMap.next:
this.navigateNext();
break;
case this.keyMap.previous:
this.navigatePrevious();
break;
case this.keyMap.child:
this.navigateChild();
break;
case this.keyMap.parent:
this.navigateParent();
break;
case this.keyMap.tab:
this.navigateOut();
break;
}
},
navigateChild: function() {
var subMenu = this.childMenu;
if (subMenu) {
var firstChild = subMenu.firstChild();
if (firstChild) {
this.container.navigateTo(firstChild);
}
}
else {
if (this.container.orientation === 'horizontal') {
var nextItem = this.topLevelMenuItem.nextSibling || this.topLevelMenuItem.parentMenu.firstChild();
if (nextItem == this.topLevelMenuItem) {
return;
}
this.topLevelMenuItem.childMenu.hide();
this.container.navigateTo(nextItem);
if (nextItem.childMenu) {
this.container.navigateTo(nextItem.childMenu.firstChild());
}
}
}
},
navigateNext: function() {
if (this.childMenu) {
this.childMenu.hide();
}
var nextMenuItem = this.nextSibling;
if (!nextMenuItem && this.parentMenu.isRoot()) {
nextMenuItem = this.parentMenu.parentMenuItem;
if (nextMenuItem) {
nextMenuItem = nextMenuItem.nextSibling;
}
}
if (!nextMenuItem) {
nextMenuItem = this.parentMenu.firstChild();
}
if (nextMenuItem) {
this.container.navigateTo(nextMenuItem);
}
},
navigateOut: function() {
this.parentMenu.blur();
},
navigateParent: function() {
var parentMenu = this.parentMenu,
horizontal = this.container.orientation === 'horizontal';
if (!parentMenu) return;
if (horizontal && this.childMenu && parentMenu.isRoot()) {
this.navigateChild();
return;
}
if (parentMenu.parentMenuItem && !parentMenu.isRoot()) {
if (horizontal && this.parentMenu.depth === 2) {
var previousItem = this.parentMenu.parentMenuItem.previousSibling;
if (!previousItem) {
previousItem = this.parentMenu.rootMenu.lastChild();
}
this.topLevelMenuItem.childMenu.hide();
this.container.navigateTo(previousItem);
if (previousItem.childMenu) {
this.container.navigateTo(previousItem.childMenu.firstChild());
}
}
else {
this.parentMenu.hide();
}
}
},
navigatePrevious: function() {
if (this.childMenu) {
this.childMenu.hide();
}
var previousMenuItem = this.previousSibling;
if (previousMenuItem) {
var childMenu = previousMenuItem.childMenu;
if (childMenu && childMenu.isRoot()) {
previousMenuItem = childMenu.lastChild();
}
}
if (!previousMenuItem && this.parentMenu.isRoot()) {
previousMenuItem = this.parentMenu.parentMenuItem;
}
if (!previousMenuItem) {
previousMenuItem = this.parentMenu.lastChild();
}
if (previousMenuItem) {
this.container.navigateTo(previousMenuItem);
}
},
setTabIndex: function(index) { if (this._anchor) this._anchor.tabIndex = index; }
};
Sys.WebForms.MenuItem._onmouseout = function(e) {
var menuItem = Sys.WebForms.Menu._elementObjectMapper.getMappedObject(this);
if (!menuItem) {
return;
}
menuItem.mouseout();
Sys.WebForms.Menu._domHelper.cancelEvent(e);
};
Sys.WebForms.MenuItem._onmouseover = function(e) {
var menuItem = Sys.WebForms.Menu._elementObjectMapper.getMappedObject(this);
if (!menuItem) {
return;
}
menuItem.mouseover();
Sys.WebForms.Menu._domHelper.cancelEvent(e);
};
Sys.WebForms.Menu._domHelper = {
addEvent: function(element, eventName, fn, useCapture) {
if (element.addEventListener) {
element.addEventListener(eventName, fn, !!useCapture);
}
else {
element['on' + eventName] = fn;
}
},
appendAttributeValue: function(element, name, value) {
this.updateAttributeValue('append', element, name, value);
},
appendCssClass: function(element, value) {
this.updateClassName('append', element, name, value);
},
appendString: function(getString, setString, value) {
var currentValue = getString();
if (!currentValue) {
setString(value);
return;
}
var regex = this._regexes.getRegex('(^| )' + value + '($| )');
if (regex.test(currentValue)) {
return;
}
setString(currentValue + ' ' + value);
},
cancelEvent: function(e) {
var event = e || window.event;
if (event) {
event.cancelBubble = true;
if (event.stopPropagation) {
event.stopPropagation();
}
}
},
contains: function(ancestor, descendant) {
for (; descendant && (descendant !== ancestor); descendant = descendant.parentNode) { }
return !!descendant;
},
firstChild: function(element) {
var child = element.firstChild;
if (child && child.nodeType !== 1) {
child = this.nextSibling(child);
}
return child;
},
getElement: function(elementOrId) { return typeof elementOrId === 'string' ? document.getElementById(elementOrId) : elementOrId; },
getElementDirection: function(element) {
if (element) {
if (element.dir) {
return element.dir;
}
return this.getElementDirection(element.parentNode);
}
return "ltr";
},
getKeyCode: function(event) { return event.keyCode || event.charCode || 0; },
insertAfter: function(element, elementToInsert) {
var next = element.nextSibling;
if (next) {
element.parentNode.insertBefore(elementToInsert, next);
}
else if (element.parentNode) {
element.parentNode.appendChild(elementToInsert);
}
},
nextSibling: function(element) {
var sibling = element.nextSibling;
while (sibling) {
if (sibling.nodeType === 1) {
return sibling;
}
sibling = sibling.nextSibling;
}
},
removeAttributeValue: function(element, name, value) {
this.updateAttributeValue('remove', element, name, value);
},
removeCssClass: function(element, value) {
this.updateClassName('remove', element, name, value);
},
removeEvent: function(element, eventName, fn, useCapture) {
if (element.removeEventListener) {
element.removeEventListener(eventName, fn, !!useCapture);
}
else if (element.detachEvent) {
element.detachEvent('on' + eventName, fn)
}
element['on' + eventName] = null;
},
removeString: function(getString, setString, valueToRemove) {
var currentValue = getString();
if (currentValue) {
var regex = this._regexes.getRegex('(\\s|\\b)' + valueToRemove + '$|\\b' + valueToRemove + '\\s+');
setString(currentValue.replace(regex, ''));
}
},
setFloat: function(element, direction) {
element.style.styleFloat = direction;
element.style.cssFloat = direction;
},
updateAttributeValue: function(operation, element, name, value) {
this[operation + 'String'](
function() {
return element.getAttribute(name);
},
function(newValue) {
element.setAttribute(name, newValue);
},
value
);
},
updateClassName: function(operation, element, name, value) {
this[operation + 'String'](
function() {
return element.className;
},
function(newValue) {
element.className = newValue;
},
value
);
},
_regexes: {
getRegex: function(pattern) {
var regex = this[pattern];
if (!regex) {
this[pattern] = regex = new RegExp(pattern);
}
return regex;
}
}
};
Sys.WebForms.Menu._elementObjectMapper = {
_computedId: 0,
_mappings: {},
_mappingIdName: 'Sys.WebForms.Menu.Mapping',
getMappedObject: function(element) {
var id = element[this._mappingIdName];
if (id) {
return this._mappings[this._mappingIdName + ':' + id];
}
},
map: function(element, theObject) {
var mappedObject = element[this._mappingIdName];
if (mappedObject === theObject) {
return;
}
var objectId = element[this._mappingIdName] || element.id || '%' + (++this._computedId);
element[this._mappingIdName] = objectId;
this._mappings[this._mappingIdName + ':' + objectId] = theObject;
theObject.mappingId = objectId;
}
};
Sys.WebForms.Menu._keyboardMapping = new (function() {
var LEFT_ARROW = 37;
var UP_ARROW = 38;
var RIGHT_ARROW = 39;
var DOWN_ARROW = 40;
var TAB = 9;
var ESCAPE = 27;
this.vertical = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 };
this.vertical[DOWN_ARROW] = this.vertical.next;
this.vertical[UP_ARROW] = this.vertical.previous;
this.vertical[RIGHT_ARROW] = this.vertical.child;
this.vertical[LEFT_ARROW] = this.vertical.parent;
this.vertical[TAB] = this.vertical[ESCAPE] = this.vertical.tab;
this.verticalRtl = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 };
this.verticalRtl[DOWN_ARROW] = this.verticalRtl.next;
this.verticalRtl[UP_ARROW] = this.verticalRtl.previous;
this.verticalRtl[LEFT_ARROW] = this.verticalRtl.child;
this.verticalRtl[RIGHT_ARROW] = this.verticalRtl.parent;
this.verticalRtl[TAB] = this.verticalRtl[ESCAPE] = this.verticalRtl.tab;
this.horizontal = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 };
this.horizontal[RIGHT_ARROW] = this.horizontal.next;
this.horizontal[LEFT_ARROW] = this.horizontal.previous;
this.horizontal[DOWN_ARROW] = this.horizontal.child;
this.horizontal[UP_ARROW] = this.horizontal.parent;
this.horizontal[TAB] = this.horizontal[ESCAPE] = this.horizontal.tab;
this.horizontalRtl = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 };
this.horizontalRtl[RIGHT_ARROW] = this.horizontalRtl.previous;
this.horizontalRtl[LEFT_ARROW] = this.horizontalRtl.next;
this.horizontalRtl[DOWN_ARROW] = this.horizontalRtl.child;
this.horizontalRtl[UP_ARROW] = this.horizontalRtl.parent;
this.horizontalRtl[TAB] = this.horizontalRtl[ESCAPE] = this.horizontalRtl.tab;
this.horizontal.contains = this.horizontalRtl.contains = this.vertical.contains = this.verticalRtl.contains = function(keycode) {
return this[keycode] != null;
};
})();
Sys.WebForms._MenuContainer = function(options) {
this.focused = false;
this.disabled = options.disabled;
this.staticDisplayLevels = options.staticDisplayLevels || 1;
this.element = options.element;
this.orientation = options.orientation || 'vertical';
this.disappearAfter = options.disappearAfter;
this.rightToLeft = Sys.WebForms.Menu._domHelper.getElementDirection(this.element) === 'rtl';
Sys.WebForms.Menu._elementObjectMapper.map(this.element, this);
this.menu = options.menu;
this.menu.rootMenu = this.menu;
this.menu.displayMode = 'static';
this.menu.element.style.position = 'relative';
this.menu.element.style.width = 'auto';
if (this.orientation === 'vertical') {
Sys.WebForms.Menu._domHelper.appendAttributeValue(this.menu.element, 'role', 'menu');
if (this.rightToLeft) {
this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.verticalRtl;
}
else {
this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.vertical;
}
}
else {
Sys.WebForms.Menu._domHelper.appendAttributeValue(this.menu.element, 'role', 'menubar');
if (this.rightToLeft) {
this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.horizontalRtl;
}
else {
this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.horizontal;
}
}
var floatBreak = document.createElement('div');
floatBreak.style.clear = this.rightToLeft ? "right" : "left";
this.element.appendChild(floatBreak);
Sys.WebForms.Menu._domHelper.setFloat(this.element, this.rightToLeft ? "right" : "left");
Sys.WebForms.Menu._domHelper.insertAfter(this.element, floatBreak);
if (!this.disabled) {
Sys.WebForms.Menu._domHelper.addEvent(this.menu.element, 'focus', this._onfocus, true);
Sys.WebForms.Menu._domHelper.addEvent(this.menu.element, 'keydown', this._onkeydown);
var menuContainer = this;
this.element.dispose = function() {
if (menuContainer.element.dispose) {
menuContainer.element.dispose = null;
Sys.WebForms.Menu._domHelper.removeEvent(menuContainer.menu.element, 'focus', menuContainer._onfocus, true);
Sys.WebForms.Menu._domHelper.removeEvent(menuContainer.menu.element, 'keydown', menuContainer._onkeydown);
menuContainer.menu.doDispose();
}
};
Sys.WebForms.Menu._domHelper.addEvent(window, 'unload', function() {
if (menuContainer.element.dispose) {
menuContainer.element.dispose();
}
});
}
};
Sys.WebForms._MenuContainer.prototype = {
blur: function() {
this.focused = false;
this.isBlurring = false;
this.menu.collapse();
this.focusedMenuItem = null;
},
focus: function(e) { this.focused = true; },
navigateTo: function(menuItem) {
if (this.focusedMenuItem && this.focusedMenuItem !== this) {
this.focusedMenuItem.highlight(false);
}
menuItem.highlight(true);
menuItem.focus();
this.focusedMenuItem = menuItem;
},
_onfocus: function(e) {
var event = e || window.event;
if (event.srcElement && this) {
if (Sys.WebForms.Menu._domHelper.contains(this.element, event.srcElement)) {
if (!this.focused) {
this.focus();
}
}
}
},
_onkeydown: function(e) {
var thisMenu = Sys.WebForms.Menu._elementObjectMapper.getMappedObject(this);
var keyCode = Sys.WebForms.Menu._domHelper.getKeyCode(e || window.event);
if (thisMenu) {
thisMenu.handleKeyPress(keyCode);
}
}
};

View File

@@ -0,0 +1,280 @@
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/SmartNav.js
var snSrc;
if ((typeof(window.__smartNav) == "undefined") || (window.__smartNav == null))
{
window.__smartNav = new Object();
window.__smartNav.update = function()
{
var sn = window.__smartNav;
var fd;
document.detachEvent("onstop", sn.stopHif);
sn.inPost = false;
try { fd = frames["__hifSmartNav"].document; } catch (e) {return;}
var fdr = fd.getElementsByTagName("asp_smartnav_rdir");
if (fdr.length > 0)
{
if ((typeof(sn.sHif) == "undefined") || (sn.sHif == null))
{
sn.sHif = document.createElement("IFRAME");
sn.sHif.name = "__hifSmartNav";
sn.sHif.style.display = "none";
sn.sHif.src = snSrc;
}
try {window.location = fdr[0].url;} catch (e) {};
return;
}
var fdurl = fd.location.href;
var index = fdurl.indexOf(snSrc);
if ((index != -1 && index == fdurl.length-snSrc.length)
|| fdurl == "about:blank")
return;
var fdurlb = fdurl.split("?")[0];
if (document.location.href.indexOf(fdurlb) < 0)
{
document.location.href=fdurl;
return;
}
sn._savedOnLoad = window.onload;
window.onload = null;
window.__smartNav.updateHelper();
}
window.__smartNav.updateHelper = function()
{
if (document.readyState != "complete")
{
window.setTimeout(window.__smartNav.updateHelper, 25);
return;
}
window.__smartNav.loadNewContent();
}
window.__smartNav.loadNewContent = function()
{
var sn = window.__smartNav;
var fd;
try { fd = frames["__hifSmartNav"].document; } catch (e) {return;}
if ((typeof(sn.sHif) != "undefined") && (sn.sHif != null))
{
sn.sHif.removeNode(true);
sn.sHif = null;
}
var hdm = document.getElementsByTagName("head")[0];
var hk = hdm.childNodes;
var tt = null;
var i;
for (i = hk.length - 1; i>= 0; i--)
{
if (hk[i].tagName == "TITLE")
{
tt = hk[i].outerHTML;
continue;
}
if (hk[i].tagName != "BASEFONT" || hk[i].innerHTML.length == 0)
hdm.removeChild(hdm.childNodes[i]);
}
var kids = fd.getElementsByTagName("head")[0].childNodes;
for (i = 0; i < kids.length; i++)
{
var tn = kids[i].tagName;
var k = document.createElement(tn);
k.id = kids[i].id;
k.mergeAttributes(kids[i]);
switch(tn)
{
case "TITLE":
if (tt == kids[i].outerHTML)
continue;
k.innerText = kids[i].text;
hdm.insertAdjacentElement("afterbegin", k);
continue;
case "BASEFONT" :
if (kids[i].innerHTML.length > 0)
continue;
break;
default:
var o = document.createElement("BODY");
o.innerHTML = "<BODY>" + kids[i].outerHTML + "</BODY>";
k = o.firstChild;
break;
}
if((typeof(k) != "undefined") && (k != null))
hdm.appendChild(k);
}
document.body.clearAttributes();
document.body.id = fd.body.id;
document.body.mergeAttributes(fd.body);
var newBodyLoad = fd.body.onload;
if ((typeof(newBodyLoad) != "undefined") && (newBodyLoad != null))
document.body.onload = newBodyLoad;
else
document.body.onload = sn._savedOnLoad;
var s = "<BODY>" + fd.body.innerHTML + "</BODY>";
if ((typeof(sn.hif) != "undefined") && (sn.hif != null))
{
var hifP = sn.hif.parentElement;
if ((typeof(hifP) != "undefined") && (hifP != null))
sn.sHif=hifP.removeChild(sn.hif);
}
document.body.innerHTML = s;
var sc = document.scripts;
for (i = 0; i < sc.length; i++)
{
sc[i].text = sc[i].text;
}
sn.hif = document.all("__hifSmartNav");
if ((typeof(sn.hif) != "undefined") && (sn.hif != null))
{
var hif = sn.hif;
sn.hifName = "__hifSmartNav" + (new Date()).getTime();
frames["__hifSmartNav"].name = sn.hifName;
sn.hifDoc = hif.contentWindow.document;
if (sn.ie5)
hif.parentElement.removeChild(hif);
window.setTimeout(sn.restoreFocus,0);
}
if (typeof(window.onload) == "string")
{
try { eval(window.onload) } catch (e) {};
}
else if ((typeof(window.onload) != "undefined") && (window.onload != null))
{
try { window.onload() } catch (e) {};
}
sn._savedOnLoad = null;
sn.attachForm();
};
window.__smartNav.restoreFocus = function()
{
if (window.__smartNav.inPost == true) return;
var curAe = document.activeElement;
var sAeId = window.__smartNav.ae;
if (((typeof(sAeId) == "undefined") || (sAeId == null)) ||
(typeof(curAe) != "undefined") && (curAe != null) && (curAe.id == sAeId || curAe.name == sAeId))
return;
var ae = document.all(sAeId);
if ((typeof(ae) == "undefined") || (ae == null)) return;
try { ae.focus(); } catch(e){};
}
window.__smartNav.saveHistory = function()
{
if ((typeof(window.__smartNav.hif) != "undefined") && (window.__smartNav.hif != null))
window.__smartNav.hif.removeNode();
if ((typeof(window.__smartNav.sHif) != "undefined") && (window.__smartNav.sHif != null)
&& (typeof(document.all[window.__smartNav.siHif]) != "undefined")
&& (document.all[window.__smartNav.siHif] != null)) {
document.all[window.__smartNav.siHif].insertAdjacentElement(
"BeforeBegin", window.__smartNav.sHif);
}
}
window.__smartNav.stopHif = function()
{
document.detachEvent("onstop", window.__smartNav.stopHif);
var sn = window.__smartNav;
if (((typeof(sn.hifDoc) == "undefined") || (sn.hifDoc == null)) &&
(typeof(sn.hif) != "undefined") && (sn.hif != null))
{
try {sn.hifDoc = sn.hif.contentWindow.document;}
catch(e){sn.hifDoc=null}
}
if (sn.hifDoc != null)
{
try {sn.hifDoc.execCommand("stop");} catch (e){}
}
}
window.__smartNav.init = function()
{
var sn = window.__smartNav;
window.__smartNav.form.__smartNavPostBack.value = 'true';
document.detachEvent("onstop", sn.stopHif);
document.attachEvent("onstop", sn.stopHif);
try { if (window.event.returnValue == false) return; } catch(e) {}
sn.inPost = true;
if ((typeof(document.activeElement) != "undefined") && (document.activeElement != null))
{
var ae = document.activeElement.id;
if (ae.length == 0)
ae = document.activeElement.name;
sn.ae = ae;
}
else
sn.ae = null;
try {document.selection.empty();} catch (e) {}
if ((typeof(sn.hif) == "undefined") || (sn.hif == null))
{
sn.hif = document.all("__hifSmartNav");
sn.hifDoc = sn.hif.contentWindow.document;
}
if ((typeof(sn.hifDoc) != "undefined") && (sn.hifDoc != null))
try {sn.hifDoc.designMode = "On";} catch(e){};
if ((typeof(sn.hif.parentElement) == "undefined") || (sn.hif.parentElement == null))
document.body.appendChild(sn.hif);
var hif = sn.hif;
hif.detachEvent("onload", sn.update);
hif.attachEvent("onload", sn.update);
window.__smartNav.fInit = true;
};
window.__smartNav.submit = function()
{
window.__smartNav.fInit = false;
try { window.__smartNav.init(); } catch(e) {}
if (window.__smartNav.fInit) {
window.__smartNav.form._submit();
}
};
window.__smartNav.attachForm = function()
{
var cf = document.forms;
for (var i=0; i<cf.length; i++)
{
if ((typeof(cf[i].__smartNavEnabled) != "undefined") && (cf[i].__smartNavEnabled != null))
{
window.__smartNav.form = cf[i];
window.__smartNav.form.insertAdjacentHTML("beforeEnd", "<input type='hidden' name='__smartNavPostBack' value='false' />");
break;
}
}
var snfm = window.__smartNav.form;
if ((typeof(snfm) == "undefined") || (snfm == null)) return false;
var sft = snfm.target;
if (sft.length != 0 && sft.indexOf("__hifSmartNav") != 0) return false;
var sfc = snfm.action.split("?")[0];
var url = window.location.href.split("?")[0];
if (url.charAt(url.length-1) != '/' && url.lastIndexOf(sfc) + sfc.length != url.length) return false;
if (snfm.__formAttached == true) return true;
snfm.__formAttached = true;
snfm.attachEvent("onsubmit", window.__smartNav.init);
snfm._submit = snfm.submit;
snfm.submit = window.__smartNav.submit;
snfm.target = window.__smartNav.hifName;
return true;
};
window.__smartNav.hifName = "__hifSmartNav" + (new Date()).getTime();
window.__smartNav.ie5 = navigator.appVersion.indexOf("MSIE 5") > 0;
var rc = window.__smartNav.attachForm();
var hif = document.all("__hifSmartNav");
if ((typeof(snSrc) == "undefined") || (snSrc == null)) {
if (typeof(window.dialogHeight) != "undefined") {
snSrc = "IEsmartnav1";
hif.src = snSrc;
} else {
snSrc = hif.src;
}
}
if (rc)
{
var fsn = frames["__hifSmartNav"];
fsn.name = window.__smartNav.hifName;
window.__smartNav.siHif = hif.sourceIndex;
try {
if (fsn.document.location != snSrc)
{
fsn.document.designMode = "On";
hif.attachEvent("onload",window.__smartNav.update);
window.__smartNav.hif = hif;
}
}
catch (e) { window.__smartNav.hif = hif; }
window.attachEvent("onbeforeunload", window.__smartNav.saveHistory);
}
else
window.__smartNav = null;
}

View File

@@ -0,0 +1,220 @@
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/TreeView.js
function TreeView_HoverNode(data, node) {
if (!data) {
return;
}
node.hoverClass = data.hoverClass;
WebForm_AppendToClassName(node, data.hoverClass);
if (__nonMSDOMBrowser) {
node = node.childNodes[node.childNodes.length - 1];
}
else {
node = node.children[node.children.length - 1];
}
node.hoverHyperLinkClass = data.hoverHyperLinkClass;
WebForm_AppendToClassName(node, data.hoverHyperLinkClass);
}
function TreeView_GetNodeText(node) {
var trNode = WebForm_GetParentByTagName(node, "TR");
var outerNodes;
if (trNode.childNodes[trNode.childNodes.length - 1].getElementsByTagName) {
outerNodes = trNode.childNodes[trNode.childNodes.length - 1].getElementsByTagName("A");
if (!outerNodes || outerNodes.length == 0) {
outerNodes = trNode.childNodes[trNode.childNodes.length - 1].getElementsByTagName("SPAN");
}
}
var textNode = (outerNodes && outerNodes.length > 0) ?
outerNodes[0].childNodes[0] :
trNode.childNodes[trNode.childNodes.length - 1].childNodes[0];
return (textNode && textNode.nodeValue) ? textNode.nodeValue : "";
}
function TreeView_PopulateNode(data, index, node, selectNode, selectImageNode, lineType, text, path, databound, datapath, parentIsLast) {
if (!data) {
return;
}
var context = new Object();
context.data = data;
context.node = node;
context.selectNode = selectNode;
context.selectImageNode = selectImageNode;
context.lineType = lineType;
context.index = index;
context.isChecked = "f";
var tr = WebForm_GetParentByTagName(node, "TR");
if (tr) {
var checkbox = tr.getElementsByTagName("INPUT");
if (checkbox && (checkbox.length > 0)) {
for (var i = 0; i < checkbox.length; i++) {
if (checkbox[i].type.toLowerCase() == "checkbox") {
if (checkbox[i].checked) {
context.isChecked = "t";
}
break;
}
}
}
}
var param = index + "|" + data.lastIndex + "|" + databound + context.isChecked + parentIsLast + "|" +
text.length + "|" + text + datapath.length + "|" + datapath + path;
TreeView_PopulateNodeDoCallBack(context, param);
}
function TreeView_ProcessNodeData(result, context) {
var treeNode = context.node;
if (result.length > 0) {
var ci = result.indexOf("|", 0);
context.data.lastIndex = result.substring(0, ci);
ci = result.indexOf("|", ci + 1);
var newExpandState = result.substring(context.data.lastIndex.length + 1, ci);
context.data.expandState.value += newExpandState;
var chunk = result.substr(ci + 1);
var newChildren, table;
if (__nonMSDOMBrowser) {
var newDiv = document.createElement("div");
newDiv.innerHTML = chunk;
table = WebForm_GetParentByTagName(treeNode, "TABLE");
newChildren = null;
if ((typeof(table.nextSibling) == "undefined") || (table.nextSibling == null)) {
table.parentNode.insertBefore(newDiv.firstChild, table.nextSibling);
newChildren = table.previousSibling;
}
else {
table = table.nextSibling;
table.parentNode.insertBefore(newDiv.firstChild, table);
newChildren = table.previousSibling;
}
newChildren = document.getElementById(treeNode.id + "Nodes");
}
else {
table = WebForm_GetParentByTagName(treeNode, "TABLE");
table.insertAdjacentHTML("afterEnd", chunk);
newChildren = document.all[treeNode.id + "Nodes"];
}
if ((typeof(newChildren) != "undefined") && (newChildren != null)) {
TreeView_ToggleNode(context.data, context.index, treeNode, context.lineType, newChildren);
treeNode.href = document.getElementById ?
"javascript:TreeView_ToggleNode(" + context.data.name + "," + context.index + ",document.getElementById('" + treeNode.id + "'),'" + context.lineType + "',document.getElementById('" + newChildren.id + "'))" :
"javascript:TreeView_ToggleNode(" + context.data.name + "," + context.index + "," + treeNode.id + ",'" + context.lineType + "'," + newChildren.id + ")";
if ((typeof(context.selectNode) != "undefined") && (context.selectNode != null) && context.selectNode.href &&
(context.selectNode.href.indexOf("javascript:TreeView_PopulateNode", 0) == 0)) {
context.selectNode.href = treeNode.href;
}
if ((typeof(context.selectImageNode) != "undefined") && (context.selectImageNode != null) && context.selectNode.href &&
(context.selectImageNode.href.indexOf("javascript:TreeView_PopulateNode", 0) == 0)) {
context.selectImageNode.href = treeNode.href;
}
}
context.data.populateLog.value += context.index + ",";
}
else {
var img = treeNode.childNodes ? treeNode.childNodes[0] : treeNode.children[0];
if ((typeof(img) != "undefined") && (img != null)) {
var lineType = context.lineType;
if (lineType == "l") {
img.src = context.data.images[13];
}
else if (lineType == "t") {
img.src = context.data.images[10];
}
else if (lineType == "-") {
img.src = context.data.images[16];
}
else {
img.src = context.data.images[3];
}
var pe;
if (__nonMSDOMBrowser) {
pe = treeNode.parentNode;
pe.insertBefore(img, treeNode);
pe.removeChild(treeNode);
}
else {
pe = treeNode.parentElement;
treeNode.style.visibility="hidden";
treeNode.style.display="none";
pe.insertAdjacentElement("afterBegin", img);
}
}
}
}
function TreeView_SelectNode(data, node, nodeId) {
if (!data) {
return;
}
if ((typeof(data.selectedClass) != "undefined") && (data.selectedClass != null)) {
var id = data.selectedNodeID.value;
if (id.length > 0) {
var selectedNode = document.getElementById(id);
if ((typeof(selectedNode) != "undefined") && (selectedNode != null)) {
WebForm_RemoveClassName(selectedNode, data.selectedHyperLinkClass);
selectedNode = WebForm_GetParentByTagName(selectedNode, "TD");
WebForm_RemoveClassName(selectedNode, data.selectedClass);
}
}
WebForm_AppendToClassName(node, data.selectedHyperLinkClass);
node = WebForm_GetParentByTagName(node, "TD");
WebForm_AppendToClassName(node, data.selectedClass)
}
data.selectedNodeID.value = nodeId;
}
function TreeView_ToggleNode(data, index, node, lineType, children) {
if (!data) {
return;
}
var img = node.childNodes[0];
var newExpandState;
try {
if (children.style.display == "none") {
children.style.display = "block";
newExpandState = "e";
if ((typeof(img) != "undefined") && (img != null)) {
if (lineType == "l") {
img.src = data.images[15];
}
else if (lineType == "t") {
img.src = data.images[12];
}
else if (lineType == "-") {
img.src = data.images[18];
}
else {
img.src = data.images[5];
}
img.alt = data.collapseToolTip.replace(/\{0\}/, TreeView_GetNodeText(node));
}
}
else {
children.style.display = "none";
newExpandState = "c";
if ((typeof(img) != "undefined") && (img != null)) {
if (lineType == "l") {
img.src = data.images[14];
}
else if (lineType == "t") {
img.src = data.images[11];
}
else if (lineType == "-") {
img.src = data.images[17];
}
else {
img.src = data.images[4];
}
img.alt = data.expandToolTip.replace(/\{0\}/, TreeView_GetNodeText(node));
}
}
}
catch(e) {}
data.expandState.value = data.expandState.value.substring(0, index) + newExpandState + data.expandState.value.slice(index + 1);
}
function TreeView_UnhoverNode(node) {
if (!node.hoverClass) {
return;
}
WebForm_RemoveClassName(node, node.hoverClass);
if (__nonMSDOMBrowser) {
node = node.childNodes[node.childNodes.length - 1];
}
else {
node = node.children[node.children.length - 1];
}
WebForm_RemoveClassName(node, node.hoverHyperLinkClass);
}

View File

@@ -0,0 +1,567 @@
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/WebForms.js
function WebForm_PostBackOptions(eventTarget, eventArgument, validation, validationGroup, actionUrl, trackFocus, clientSubmit) {
this.eventTarget = eventTarget;
this.eventArgument = eventArgument;
this.validation = validation;
this.validationGroup = validationGroup;
this.actionUrl = actionUrl;
this.trackFocus = trackFocus;
this.clientSubmit = clientSubmit;
}
function WebForm_DoPostBackWithOptions(options) {
var validationResult = true;
if (options.validation) {
if (typeof(Page_ClientValidate) == 'function') {
validationResult = Page_ClientValidate(options.validationGroup);
}
}
if (validationResult) {
if ((typeof(options.actionUrl) != "undefined") && (options.actionUrl != null) && (options.actionUrl.length > 0)) {
theForm.action = options.actionUrl;
}
if (options.trackFocus) {
var lastFocus = theForm.elements["__LASTFOCUS"];
if ((typeof(lastFocus) != "undefined") && (lastFocus != null)) {
if (typeof(document.activeElement) == "undefined") {
lastFocus.value = options.eventTarget;
}
else {
var active = document.activeElement;
if ((typeof(active) != "undefined") && (active != null)) {
if ((typeof(active.id) != "undefined") && (active.id != null) && (active.id.length > 0)) {
lastFocus.value = active.id;
}
else if (typeof(active.name) != "undefined") {
lastFocus.value = active.name;
}
}
}
}
}
}
if (options.clientSubmit) {
__doPostBack(options.eventTarget, options.eventArgument);
}
}
var __pendingCallbacks = new Array();
var __synchronousCallBackIndex = -1;
function WebForm_DoCallback(eventTarget, eventArgument, eventCallback, context, errorCallback, useAsync) {
var postData = __theFormPostData +
"__CALLBACKID=" + WebForm_EncodeCallback(eventTarget) +
"&__CALLBACKPARAM=" + WebForm_EncodeCallback(eventArgument);
if (theForm["__EVENTVALIDATION"]) {
postData += "&__EVENTVALIDATION=" + WebForm_EncodeCallback(theForm["__EVENTVALIDATION"].value);
}
var xmlRequest,e;
try {
xmlRequest = new XMLHttpRequest();
}
catch(e) {
try {
xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
}
}
var setRequestHeaderMethodExists = true;
try {
setRequestHeaderMethodExists = (xmlRequest && xmlRequest.setRequestHeader);
}
catch(e) {}
var callback = new Object();
callback.eventCallback = eventCallback;
callback.context = context;
callback.errorCallback = errorCallback;
callback.async = useAsync;
var callbackIndex = WebForm_FillFirstAvailableSlot(__pendingCallbacks, callback);
if (!useAsync) {
if (__synchronousCallBackIndex != -1) {
__pendingCallbacks[__synchronousCallBackIndex] = null;
}
__synchronousCallBackIndex = callbackIndex;
}
if (setRequestHeaderMethodExists) {
xmlRequest.onreadystatechange = WebForm_CallbackComplete;
callback.xmlRequest = xmlRequest;
// e.g. http:
var action = theForm.action || document.location.pathname, fragmentIndex = action.indexOf('#');
if (fragmentIndex !== -1) {
action = action.substr(0, fragmentIndex);
}
if (!__nonMSDOMBrowser) {
var queryIndex = action.indexOf('?');
if (queryIndex !== -1) {
var path = action.substr(0, queryIndex);
if (path.indexOf("%") === -1) {
action = encodeURI(path) + action.substr(queryIndex);
}
}
else if (action.indexOf("%") === -1) {
action = encodeURI(action);
}
}
xmlRequest.open("POST", action, true);
xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
xmlRequest.send(postData);
return;
}
callback.xmlRequest = new Object();
var callbackFrameID = "__CALLBACKFRAME" + callbackIndex;
var xmlRequestFrame = document.frames[callbackFrameID];
if (!xmlRequestFrame) {
xmlRequestFrame = document.createElement("IFRAME");
xmlRequestFrame.width = "1";
xmlRequestFrame.height = "1";
xmlRequestFrame.frameBorder = "0";
xmlRequestFrame.id = callbackFrameID;
xmlRequestFrame.name = callbackFrameID;
xmlRequestFrame.style.position = "absolute";
xmlRequestFrame.style.top = "-100px"
xmlRequestFrame.style.left = "-100px";
try {
if (callBackFrameUrl) {
xmlRequestFrame.src = callBackFrameUrl;
}
}
catch(e) {}
document.body.appendChild(xmlRequestFrame);
}
var interval = window.setInterval(function() {
xmlRequestFrame = document.frames[callbackFrameID];
if (xmlRequestFrame && xmlRequestFrame.document) {
window.clearInterval(interval);
xmlRequestFrame.document.write("");
xmlRequestFrame.document.close();
xmlRequestFrame.document.write('<html><body><form method="post"><input type="hidden" name="__CALLBACKLOADSCRIPT" value="t"></form></body></html>');
xmlRequestFrame.document.close();
xmlRequestFrame.document.forms[0].action = theForm.action;
var count = __theFormPostCollection.length;
var element;
for (var i = 0; i < count; i++) {
element = __theFormPostCollection[i];
if (element) {
var fieldElement = xmlRequestFrame.document.createElement("INPUT");
fieldElement.type = "hidden";
fieldElement.name = element.name;
fieldElement.value = element.value;
xmlRequestFrame.document.forms[0].appendChild(fieldElement);
}
}
var callbackIdFieldElement = xmlRequestFrame.document.createElement("INPUT");
callbackIdFieldElement.type = "hidden";
callbackIdFieldElement.name = "__CALLBACKID";
callbackIdFieldElement.value = eventTarget;
xmlRequestFrame.document.forms[0].appendChild(callbackIdFieldElement);
var callbackParamFieldElement = xmlRequestFrame.document.createElement("INPUT");
callbackParamFieldElement.type = "hidden";
callbackParamFieldElement.name = "__CALLBACKPARAM";
callbackParamFieldElement.value = eventArgument;
xmlRequestFrame.document.forms[0].appendChild(callbackParamFieldElement);
if (theForm["__EVENTVALIDATION"]) {
var callbackValidationFieldElement = xmlRequestFrame.document.createElement("INPUT");
callbackValidationFieldElement.type = "hidden";
callbackValidationFieldElement.name = "__EVENTVALIDATION";
callbackValidationFieldElement.value = theForm["__EVENTVALIDATION"].value;
xmlRequestFrame.document.forms[0].appendChild(callbackValidationFieldElement);
}
var callbackIndexFieldElement = xmlRequestFrame.document.createElement("INPUT");
callbackIndexFieldElement.type = "hidden";
callbackIndexFieldElement.name = "__CALLBACKINDEX";
callbackIndexFieldElement.value = callbackIndex;
xmlRequestFrame.document.forms[0].appendChild(callbackIndexFieldElement);
xmlRequestFrame.document.forms[0].submit();
}
}, 10);
}
function WebForm_CallbackComplete() {
for (var i = 0; i < __pendingCallbacks.length; i++) {
callbackObject = __pendingCallbacks[i];
if (callbackObject && callbackObject.xmlRequest && (callbackObject.xmlRequest.readyState == 4)) {
if (!__pendingCallbacks[i].async) {
__synchronousCallBackIndex = -1;
}
__pendingCallbacks[i] = null;
var callbackFrameID = "__CALLBACKFRAME" + i;
var xmlRequestFrame = document.getElementById(callbackFrameID);
if (xmlRequestFrame) {
xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
}
WebForm_ExecuteCallback(callbackObject);
}
}
}
function WebForm_ExecuteCallback(callbackObject) {
var response = callbackObject.xmlRequest.responseText;
if (response.charAt(0) == "s") {
if ((typeof(callbackObject.eventCallback) != "undefined") && (callbackObject.eventCallback != null)) {
callbackObject.eventCallback(response.substring(1), callbackObject.context);
}
}
else if (response.charAt(0) == "e") {
if ((typeof(callbackObject.errorCallback) != "undefined") && (callbackObject.errorCallback != null)) {
callbackObject.errorCallback(response.substring(1), callbackObject.context);
}
}
else {
var separatorIndex = response.indexOf("|");
if (separatorIndex != -1) {
var validationFieldLength = parseInt(response.substring(0, separatorIndex));
if (!isNaN(validationFieldLength)) {
var validationField = response.substring(separatorIndex + 1, separatorIndex + validationFieldLength + 1);
if (validationField != "") {
var validationFieldElement = theForm["__EVENTVALIDATION"];
if (!validationFieldElement) {
validationFieldElement = document.createElement("INPUT");
validationFieldElement.type = "hidden";
validationFieldElement.name = "__EVENTVALIDATION";
theForm.appendChild(validationFieldElement);
}
validationFieldElement.value = validationField;
}
if ((typeof(callbackObject.eventCallback) != "undefined") && (callbackObject.eventCallback != null)) {
callbackObject.eventCallback(response.substring(separatorIndex + validationFieldLength + 1), callbackObject.context);
}
}
}
}
}
function WebForm_FillFirstAvailableSlot(array, element) {
var i;
for (i = 0; i < array.length; i++) {
if (!array[i]) break;
}
array[i] = element;
return i;
}
var __nonMSDOMBrowser = (window.navigator.appName.toLowerCase().indexOf('explorer') == -1);
var __theFormPostData = "";
var __theFormPostCollection = new Array();
var __callbackTextTypes = /^(text|password|hidden|search|tel|url|email|number|range|color|datetime|date|month|week|time|datetime-local)$/i;
function WebForm_InitCallback() {
var formElements = theForm.elements,
count = formElements.length,
element;
for (var i = 0; i < count; i++) {
element = formElements[i];
var tagName = element.tagName.toLowerCase();
if (tagName == "input") {
var type = element.type;
if ((__callbackTextTypes.test(type) || ((type == "checkbox" || type == "radio") && element.checked))
&& (element.id != "__EVENTVALIDATION")) {
WebForm_InitCallbackAddField(element.name, element.value);
}
}
else if (tagName == "select") {
var selectCount = element.options.length;
for (var j = 0; j < selectCount; j++) {
var selectChild = element.options[j];
if (selectChild.selected == true) {
WebForm_InitCallbackAddField(element.name, element.value);
}
}
}
else if (tagName == "textarea") {
WebForm_InitCallbackAddField(element.name, element.value);
}
}
}
function WebForm_InitCallbackAddField(name, value) {
var nameValue = new Object();
nameValue.name = name;
nameValue.value = value;
__theFormPostCollection[__theFormPostCollection.length] = nameValue;
__theFormPostData += WebForm_EncodeCallback(name) + "=" + WebForm_EncodeCallback(value) + "&";
}
function WebForm_EncodeCallback(parameter) {
if (encodeURIComponent) {
return encodeURIComponent(parameter);
}
else {
return escape(parameter);
}
}
var __disabledControlArray = new Array();
function WebForm_ReEnableControls() {
if (typeof(__enabledControlArray) == 'undefined') {
return false;
}
var disabledIndex = 0;
for (var i = 0; i < __enabledControlArray.length; i++) {
var c;
if (__nonMSDOMBrowser) {
c = document.getElementById(__enabledControlArray[i]);
}
else {
c = document.all[__enabledControlArray[i]];
}
if ((typeof(c) != "undefined") && (c != null) && (c.disabled == true)) {
c.disabled = false;
__disabledControlArray[disabledIndex++] = c;
}
}
setTimeout("WebForm_ReDisableControls()", 0);
return true;
}
function WebForm_ReDisableControls() {
for (var i = 0; i < __disabledControlArray.length; i++) {
__disabledControlArray[i].disabled = true;
}
}
function WebForm_SimulateClick(element, event) {
var clickEvent;
if (element) {
if (element.click) {
element.click();
} else {
clickEvent = document.createEvent("MouseEvents");
clickEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
if (!element.dispatchEvent(clickEvent)) {
return true;
}
}
event.cancelBubble = true;
if (event.stopPropagation) {
event.stopPropagation();
}
return false;
}
return true;
}
function WebForm_FireDefaultButton(event, target) {
if (event.keyCode == 13) {
var src = event.srcElement || event.target;
if (src &&
((src.tagName.toLowerCase() == "input") &&
(src.type.toLowerCase() == "submit" || src.type.toLowerCase() == "button")) ||
((src.tagName.toLowerCase() == "a") &&
(src.href != null) && (src.href != "")) ||
(src.tagName.toLowerCase() == "textarea")) {
return true;
}
var defaultButton;
if (__nonMSDOMBrowser) {
defaultButton = document.getElementById(target);
}
else {
defaultButton = document.all[target];
}
if (defaultButton) {
return WebForm_SimulateClick(defaultButton, event);
}
}
return true;
}
function WebForm_GetScrollX() {
if (__nonMSDOMBrowser) {
return window.pageXOffset;
}
else {
if (document.documentElement && document.documentElement.scrollLeft) {
return document.documentElement.scrollLeft;
}
else if (document.body) {
return document.body.scrollLeft;
}
}
return 0;
}
function WebForm_GetScrollY() {
if (__nonMSDOMBrowser) {
return window.pageYOffset;
}
else {
if (document.documentElement && document.documentElement.scrollTop) {
return document.documentElement.scrollTop;
}
else if (document.body) {
return document.body.scrollTop;
}
}
return 0;
}
function WebForm_SaveScrollPositionSubmit() {
if (__nonMSDOMBrowser) {
theForm.elements['__SCROLLPOSITIONY'].value = window.pageYOffset;
theForm.elements['__SCROLLPOSITIONX'].value = window.pageXOffset;
}
else {
theForm.__SCROLLPOSITIONX.value = WebForm_GetScrollX();
theForm.__SCROLLPOSITIONY.value = WebForm_GetScrollY();
}
if ((typeof(this.oldSubmit) != "undefined") && (this.oldSubmit != null)) {
return this.oldSubmit();
}
return true;
}
function WebForm_SaveScrollPositionOnSubmit() {
theForm.__SCROLLPOSITIONX.value = WebForm_GetScrollX();
theForm.__SCROLLPOSITIONY.value = WebForm_GetScrollY();
if ((typeof(this.oldOnSubmit) != "undefined") && (this.oldOnSubmit != null)) {
return this.oldOnSubmit();
}
return true;
}
function WebForm_RestoreScrollPosition() {
if (__nonMSDOMBrowser) {
window.scrollTo(theForm.elements['__SCROLLPOSITIONX'].value, theForm.elements['__SCROLLPOSITIONY'].value);
}
else {
window.scrollTo(theForm.__SCROLLPOSITIONX.value, theForm.__SCROLLPOSITIONY.value);
}
if ((typeof(theForm.oldOnLoad) != "undefined") && (theForm.oldOnLoad != null)) {
return theForm.oldOnLoad();
}
return true;
}
function WebForm_TextBoxKeyHandler(event) {
if (event.keyCode == 13) {
var target;
if (__nonMSDOMBrowser) {
target = event.target;
}
else {
target = event.srcElement;
}
if ((typeof(target) != "undefined") && (target != null)) {
if (typeof(target.onchange) != "undefined") {
target.onchange();
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return false;
}
}
}
return true;
}
function WebForm_TrimString(value) {
return value.replace(/^\s+|\s+$/g, '')
}
function WebForm_AppendToClassName(element, className) {
var currentClassName = ' ' + WebForm_TrimString(element.className) + ' ';
className = WebForm_TrimString(className);
var index = currentClassName.indexOf(' ' + className + ' ');
if (index === -1) {
element.className = (element.className === '') ? className : element.className + ' ' + className;
}
}
function WebForm_RemoveClassName(element, className) {
var currentClassName = ' ' + WebForm_TrimString(element.className) + ' ';
className = WebForm_TrimString(className);
var index = currentClassName.indexOf(' ' + className + ' ');
if (index >= 0) {
element.className = WebForm_TrimString(currentClassName.substring(0, index) + ' ' +
currentClassName.substring(index + className.length + 1, currentClassName.length));
}
}
function WebForm_GetElementById(elementId) {
if (document.getElementById) {
return document.getElementById(elementId);
}
else if (document.all) {
return document.all[elementId];
}
else return null;
}
function WebForm_GetElementByTagName(element, tagName) {
var elements = WebForm_GetElementsByTagName(element, tagName);
if (elements && elements.length > 0) {
return elements[0];
}
else return null;
}
function WebForm_GetElementsByTagName(element, tagName) {
if (element && tagName) {
if (element.getElementsByTagName) {
return element.getElementsByTagName(tagName);
}
if (element.all && element.all.tags) {
return element.all.tags(tagName);
}
}
return null;
}
function WebForm_GetElementDir(element) {
if (element) {
if (element.dir) {
return element.dir;
}
return WebForm_GetElementDir(element.parentNode);
}
return "ltr";
}
function WebForm_GetElementPosition(element) {
var result = new Object();
result.x = 0;
result.y = 0;
result.width = 0;
result.height = 0;
if (element.offsetParent) {
result.x = element.offsetLeft;
result.y = element.offsetTop;
var parent = element.offsetParent;
while (parent) {
result.x += parent.offsetLeft;
result.y += parent.offsetTop;
var parentTagName = parent.tagName.toLowerCase();
if (parentTagName != "table" &&
parentTagName != "body" &&
parentTagName != "html" &&
parentTagName != "div" &&
parent.clientTop &&
parent.clientLeft) {
result.x += parent.clientLeft;
result.y += parent.clientTop;
}
parent = parent.offsetParent;
}
}
else if (element.left && element.top) {
result.x = element.left;
result.y = element.top;
}
else {
if (element.x) {
result.x = element.x;
}
if (element.y) {
result.y = element.y;
}
}
if (element.offsetWidth && element.offsetHeight) {
result.width = element.offsetWidth;
result.height = element.offsetHeight;
}
else if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
result.width = element.style.pixelWidth;
result.height = element.style.pixelHeight;
}
return result;
}
function WebForm_GetParentByTagName(element, tagName) {
var parent = element.parentNode;
var upperTagName = tagName.toUpperCase();
while (parent && (parent.tagName.toUpperCase() != upperTagName)) {
parent = parent.parentNode ? parent.parentNode : parent.parentElement;
}
return parent;
}
function WebForm_SetElementHeight(element, height) {
if (element && element.style) {
element.style.height = height + "px";
}
}
function WebForm_SetElementWidth(element, width) {
if (element && element.style) {
element.style.width = width + "px";
}
}
function WebForm_SetElementX(element, x) {
if (element && element.style) {
element.style.left = x + "px";
}
}
function WebForm_SetElementY(element, y) {
if (element && element.style) {
element.style.top = y + "px";
}
}

View File

@@ -0,0 +1,647 @@
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/WebParts.js
var __wpm = null;
function Point(x, y) {
this.x = x;
this.y = y;
}
function __wpTranslateOffset(x, y, offsetElement, relativeToElement, includeScroll) {
while ((typeof(offsetElement) != "undefined") && (offsetElement != null) && (offsetElement != relativeToElement)) {
x += offsetElement.offsetLeft;
y += offsetElement.offsetTop;
var tagName = offsetElement.tagName;
if ((tagName != "TABLE") && (tagName != "BODY")) {
x += offsetElement.clientLeft;
y += offsetElement.clientTop;
}
if (includeScroll && (tagName != "BODY")) {
x -= offsetElement.scrollLeft;
y -= offsetElement.scrollTop;
}
offsetElement = offsetElement.offsetParent;
}
return new Point(x, y);
}
function __wpGetPageEventLocation(event, includeScroll) {
if ((typeof(event) == "undefined") || (event == null)) {
event = window.event;
}
return __wpTranslateOffset(event.offsetX, event.offsetY, event.srcElement, null, includeScroll);
}
function __wpClearSelection() {
document.selection.empty();
}
function WebPart(webPartElement, webPartTitleElement, zone, zoneIndex, allowZoneChange) {
this.webPartElement = webPartElement;
this.allowZoneChange = allowZoneChange;
this.zone = zone;
this.zoneIndex = zoneIndex;
this.title = ((typeof(webPartTitleElement) != "undefined") && (webPartTitleElement != null)) ?
webPartTitleElement.innerText : "";
webPartElement.__webPart = this;
if ((typeof(webPartTitleElement) != "undefined") && (webPartTitleElement != null)) {
webPartTitleElement.style.cursor = "move";
webPartTitleElement.attachEvent("onmousedown", WebPart_OnMouseDown);
webPartElement.attachEvent("ondragstart", WebPart_OnDragStart);
webPartElement.attachEvent("ondrag", WebPart_OnDrag);
webPartElement.attachEvent("ondragend", WebPart_OnDragEnd);
}
this.UpdatePosition = WebPart_UpdatePosition;
this.Dispose = WebPart_Dispose;
}
function WebPart_Dispose() {
this.webPartElement.__webPart = null
}
function WebPart_OnMouseDown() {
var currentEvent = window.event;
var draggedWebPart = WebPart_GetParentWebPartElement(currentEvent.srcElement);
if ((typeof(draggedWebPart) == "undefined") || (draggedWebPart == null)) {
return;
}
document.selection.empty();
try {
__wpm.draggedWebPart = draggedWebPart;
__wpm.DragDrop();
}
catch (e) {
__wpm.draggedWebPart = draggedWebPart;
window.setTimeout("__wpm.DragDrop()", 0);
}
currentEvent.returnValue = false;
currentEvent.cancelBubble = true;
}
function WebPart_OnDragStart() {
var currentEvent = window.event;
var webPartElement = currentEvent.srcElement;
if ((typeof(webPartElement.__webPart) == "undefined") || (webPartElement.__webPart == null)) {
currentEvent.returnValue = false;
currentEvent.cancelBubble = true;
return;
}
var dataObject = currentEvent.dataTransfer;
dataObject.effectAllowed = __wpm.InitiateWebPartDragDrop(webPartElement);
}
function WebPart_OnDrag() {
__wpm.ContinueWebPartDragDrop();
}
function WebPart_OnDragEnd() {
__wpm.CompleteWebPartDragDrop();
}
function WebPart_GetParentWebPartElement(containedElement) {
var elem = containedElement;
while ((typeof(elem.__webPart) == "undefined") || (elem.__webPart == null)) {
elem = elem.parentElement;
if ((typeof(elem) == "undefined") || (elem == null)) {
break;
}
}
return elem;
}
function WebPart_UpdatePosition() {
var location = __wpTranslateOffset(0, 0, this.webPartElement, null, false);
this.middleX = location.x + this.webPartElement.offsetWidth / 2;
this.middleY = location.y + this.webPartElement.offsetHeight / 2;
}
function Zone(zoneElement, zoneIndex, uniqueID, isVertical, allowLayoutChange, highlightColor) {
var webPartTable = null;
if (zoneElement.rows.length == 1) {
webPartTableContainer = zoneElement.rows[0].cells[0];
}
else {
webPartTableContainer = zoneElement.rows[1].cells[0];
}
var i;
for (i = 0; i < webPartTableContainer.childNodes.length; i++) {
var node = webPartTableContainer.childNodes[i];
if (node.tagName == "TABLE") {
webPartTable = node;
break;
}
}
this.zoneElement = zoneElement;
this.zoneIndex = zoneIndex;
this.webParts = new Array();
this.uniqueID = uniqueID;
this.isVertical = isVertical;
this.allowLayoutChange = allowLayoutChange;
this.allowDrop = false;
this.webPartTable = webPartTable;
this.highlightColor = highlightColor;
this.savedBorderColor = (webPartTable != null) ? webPartTable.style.borderColor : null;
this.dropCueElements = new Array();
if (webPartTable != null) {
if (isVertical) {
for (i = 0; i < webPartTable.rows.length; i += 2) {
this.dropCueElements[i / 2] = webPartTable.rows[i].cells[0].childNodes[0];
}
}
else {
for (i = 0; i < webPartTable.rows[0].cells.length; i += 2) {
this.dropCueElements[i / 2] = webPartTable.rows[0].cells[i].childNodes[0];
}
}
}
this.AddWebPart = Zone_AddWebPart;
this.GetWebPartIndex = Zone_GetWebPartIndex;
this.ToggleDropCues = Zone_ToggleDropCues;
this.UpdatePosition = Zone_UpdatePosition;
this.Dispose = Zone_Dispose;
webPartTable.__zone = this;
webPartTable.attachEvent("ondragenter", Zone_OnDragEnter);
webPartTable.attachEvent("ondrop", Zone_OnDrop);
}
function Zone_Dispose() {
for (var i = 0; i < this.webParts.length; i++) {
this.webParts[i].Dispose();
}
this.webPartTable.__zone = null;
}
function Zone_OnDragEnter() {
var handled = __wpm.ProcessWebPartDragEnter();
var currentEvent = window.event;
if (handled) {
currentEvent.returnValue = false;
currentEvent.cancelBubble = true;
}
}
function Zone_OnDragOver() {
var handled = __wpm.ProcessWebPartDragOver();
var currentEvent = window.event;
if (handled) {
currentEvent.returnValue = false;
currentEvent.cancelBubble = true;
}
}
function Zone_OnDrop() {
var handled = __wpm.ProcessWebPartDrop();
var currentEvent = window.event;
if (handled) {
currentEvent.returnValue = false;
currentEvent.cancelBubble = true;
}
}
function Zone_GetParentZoneElement(containedElement) {
var elem = containedElement;
while ((typeof(elem.__zone) == "undefined") || (elem.__zone == null)) {
elem = elem.parentElement;
if ((typeof(elem) == "undefined") || (elem == null)) {
break;
}
}
return elem;
}
function Zone_AddWebPart(webPartElement, webPartTitleElement, allowZoneChange) {
var webPart = null;
var zoneIndex = this.webParts.length;
if (this.allowLayoutChange && __wpm.IsDragDropEnabled()) {
webPart = new WebPart(webPartElement, webPartTitleElement, this, zoneIndex, allowZoneChange);
}
else {
webPart = new WebPart(webPartElement, null, this, zoneIndex, allowZoneChange);
}
this.webParts[zoneIndex] = webPart;
return webPart;
}
function Zone_ToggleDropCues(show, index, ignoreOutline) {
if (ignoreOutline == false) {
this.webPartTable.style.borderColor = (show ? this.highlightColor : this.savedBorderColor);
}
if (index == -1) {
return;
}
var dropCue = this.dropCueElements[index];
if (dropCue && dropCue.style) {
if (dropCue.style.height == "100%" && !dropCue.webPartZoneHorizontalCueResized) {
var oldParentHeight = dropCue.parentElement.clientHeight;
var realHeight = oldParentHeight - 10;
dropCue.style.height = realHeight + "px";
var dropCueVerticalBar = dropCue.getElementsByTagName("DIV")[0];
if (dropCueVerticalBar && dropCueVerticalBar.style) {
dropCueVerticalBar.style.height = dropCue.style.height;
var heightDiff = (dropCue.parentElement.clientHeight - oldParentHeight);
if (heightDiff) {
dropCue.style.height = (realHeight - heightDiff) + "px";
dropCueVerticalBar.style.height = dropCue.style.height;
}
}
dropCue.webPartZoneHorizontalCueResized = true;
}
dropCue.style.visibility = (show ? "visible" : "hidden");
}
}
function Zone_GetWebPartIndex(location) {
var x = location.x;
var y = location.y;
if ((x < this.webPartTableLeft) || (x > this.webPartTableRight) ||
(y < this.webPartTableTop) || (y > this.webPartTableBottom)) {
return -1;
}
var vertical = this.isVertical;
var webParts = this.webParts;
var webPartsCount = webParts.length;
for (var i = 0; i < webPartsCount; i++) {
var webPart = webParts[i];
if (vertical) {
if (y < webPart.middleY) {
return i;
}
}
else {
if (x < webPart.middleX) {
return i;
}
}
}
return webPartsCount;
}
function Zone_UpdatePosition() {
var topLeft = __wpTranslateOffset(0, 0, this.webPartTable, null, false);
this.webPartTableLeft = topLeft.x;
this.webPartTableTop = topLeft.y;
this.webPartTableRight = (this.webPartTable != null) ? topLeft.x + this.webPartTable.offsetWidth : topLeft.x;
this.webPartTableBottom = (this.webPartTable != null) ? topLeft.y + this.webPartTable.offsetHeight : topLeft.y;
for (var i = 0; i < this.webParts.length; i++) {
this.webParts[i].UpdatePosition();
}
}
function WebPartDragState(webPartElement, effect) {
this.webPartElement = webPartElement;
this.dropZoneElement = null;
this.dropIndex = -1;
this.effect = effect;
this.dropped = false;
}
function WebPartMenu(menuLabelElement, menuDropDownElement, menuElement) {
this.menuLabelElement = menuLabelElement;
this.menuDropDownElement = menuDropDownElement;
this.menuElement = menuElement;
this.menuLabelElement.__menu = this;
this.menuLabelElement.attachEvent('onclick', WebPartMenu_OnClick);
this.menuLabelElement.attachEvent('onkeypress', WebPartMenu_OnKeyPress);
this.menuLabelElement.attachEvent('onmouseenter', WebPartMenu_OnMouseEnter);
this.menuLabelElement.attachEvent('onmouseleave', WebPartMenu_OnMouseLeave);
if ((typeof(this.menuDropDownElement) != "undefined") && (this.menuDropDownElement != null)) {
this.menuDropDownElement.__menu = this;
}
this.menuItemStyle = "";
this.menuItemHoverStyle = "";
this.popup = null;
this.hoverClassName = "";
this.hoverColor = "";
this.oldColor = this.menuLabelElement.style.color;
this.oldTextDecoration = this.menuLabelElement.style.textDecoration;
this.oldClassName = this.menuLabelElement.className;
this.Show = WebPartMenu_Show;
this.Hide = WebPartMenu_Hide;
this.Hover = WebPartMenu_Hover;
this.Unhover = WebPartMenu_Unhover;
this.Dispose = WebPartMenu_Dispose;
var menu = this;
this.disposeDelegate = function() { menu.Dispose(); };
window.attachEvent('onunload', this.disposeDelegate);
}
function WebPartMenu_Dispose() {
this.menuLabelElement.__menu = null;
this.menuDropDownElement.__menu = null;
window.detachEvent('onunload', this.disposeDelegate);
}
function WebPartMenu_Show() {
if ((typeof(__wpm.menu) != "undefined") && (__wpm.menu != null)) {
__wpm.menu.Hide();
}
var menuHTML =
"<html><head><style>" +
"a.menuItem, a.menuItem:Link { display: block; padding: 1px; text-decoration: none; " + this.itemStyle + " }" +
"a.menuItem:Hover { " + this.itemHoverStyle + " }" +
"</style><body scroll=\"no\" style=\"border: none; margin: 0; padding: 0;\" ondragstart=\"window.event.returnValue=false;\" onclick=\"popup.hide()\">" +
this.menuElement.innerHTML +
"</body></html>";
var width = 16;
var height = 16;
this.popup = window.createPopup();
__wpm.menu = this;
var popupDocument = this.popup.document;
popupDocument.write(menuHTML);
this.popup.show(0, 0, width, height);
var popupBody = popupDocument.body;
width = popupBody.scrollWidth;
height = popupBody.scrollHeight;
if (width < this.menuLabelElement.offsetWidth) {
width = this.menuLabelElement.offsetWidth + 16;
}
if (this.menuElement.innerHTML.indexOf("progid:DXImageTransform.Microsoft.Shadow") != -1) {
popupBody.style.paddingRight = "4px";
}
popupBody.__wpm = __wpm;
popupBody.__wpmDeleteWarning = __wpmDeleteWarning;
popupBody.__wpmCloseProviderWarning = __wpmCloseProviderWarning;
popupBody.popup = this.popup;
this.popup.hide();
this.popup.show(0, this.menuLabelElement.offsetHeight, width, height, this.menuLabelElement);
}
function WebPartMenu_Hide() {
if (__wpm.menu == this) {
__wpm.menu = null;
if ((typeof(this.popup) != "undefined") && (this.popup != null)) {
this.popup.hide();
this.popup = null;
}
}
}
function WebPartMenu_Hover() {
if (this.labelHoverClassName != "") {
this.menuLabelElement.className = this.menuLabelElement.className + " " + this.labelHoverClassName;
}
if (this.labelHoverColor != "") {
this.menuLabelElement.style.color = this.labelHoverColor;
}
}
function WebPartMenu_Unhover() {
if (this.labelHoverClassName != "") {
this.menuLabelElement.style.textDecoration = this.oldTextDecoration;
this.menuLabelElement.className = this.oldClassName;
}
if (this.labelHoverColor != "") {
this.menuLabelElement.style.color = this.oldColor;
}
}
function WebPartMenu_OnClick() {
var menu = window.event.srcElement.__menu;
if ((typeof(menu) != "undefined") && (menu != null)) {
window.event.returnValue = false;
window.event.cancelBubble = true;
menu.Show();
}
}
function WebPartMenu_OnKeyPress() {
if (window.event.keyCode == 13) {
var menu = window.event.srcElement.__menu;
if ((typeof(menu) != "undefined") && (menu != null)) {
window.event.returnValue = false;
window.event.cancelBubble = true;
menu.Show();
}
}
}
function WebPartMenu_OnMouseEnter() {
var menu = window.event.srcElement.__menu;
if ((typeof(menu) != "undefined") && (menu != null)) {
menu.Hover();
}
}
function WebPartMenu_OnMouseLeave() {
var menu = window.event.srcElement.__menu;
if ((typeof(menu) != "undefined") && (menu != null)) {
menu.Unhover();
}
}
function WebPartManager() {
this.overlayContainerElement = null;
this.zones = new Array();
this.dragState = null;
this.menu = null;
this.draggedWebPart = null;
this.AddZone = WebPartManager_AddZone;
this.IsDragDropEnabled = WebPartManager_IsDragDropEnabled;
this.DragDrop = WebPartManager_DragDrop;
this.InitiateWebPartDragDrop = WebPartManager_InitiateWebPartDragDrop;
this.CompleteWebPartDragDrop = WebPartManager_CompleteWebPartDragDrop;
this.ContinueWebPartDragDrop = WebPartManager_ContinueWebPartDragDrop;
this.ProcessWebPartDragEnter = WebPartManager_ProcessWebPartDragEnter;
this.ProcessWebPartDragOver = WebPartManager_ProcessWebPartDragOver;
this.ProcessWebPartDrop = WebPartManager_ProcessWebPartDrop;
this.ShowHelp = WebPartManager_ShowHelp;
this.ExportWebPart = WebPartManager_ExportWebPart;
this.Execute = WebPartManager_Execute;
this.SubmitPage = WebPartManager_SubmitPage;
this.UpdatePositions = WebPartManager_UpdatePositions;
window.attachEvent("onunload", WebPartManager_Dispose);
}
function WebPartManager_Dispose() {
for (var i = 0; i < __wpm.zones.length; i++) {
__wpm.zones[i].Dispose();
}
window.detachEvent("onunload", WebPartManager_Dispose);
}
function WebPartManager_AddZone(zoneElement, uniqueID, isVertical, allowLayoutChange, highlightColor) {
var zoneIndex = this.zones.length;
var zone = new Zone(zoneElement, zoneIndex, uniqueID, isVertical, allowLayoutChange, highlightColor);
this.zones[zoneIndex] = zone;
return zone;
}
function WebPartManager_IsDragDropEnabled() {
return ((typeof(this.overlayContainerElement) != "undefined") && (this.overlayContainerElement != null));
}
function WebPartManager_DragDrop() {
if ((typeof(this.draggedWebPart) != "undefined") && (this.draggedWebPart != null)) {
var tempWebPart = this.draggedWebPart;
this.draggedWebPart = null;
tempWebPart.dragDrop();
window.setTimeout("__wpClearSelection()", 0);
}
}
function WebPartManager_InitiateWebPartDragDrop(webPartElement) {
var webPart = webPartElement.__webPart;
this.UpdatePositions();
this.dragState = new WebPartDragState(webPartElement, "move");
var location = __wpGetPageEventLocation(window.event, true);
var overlayContainerElement = this.overlayContainerElement;
overlayContainerElement.style.left = location.x - webPartElement.offsetWidth / 2;
overlayContainerElement.style.top = location.y + 4 + (webPartElement.clientTop ? webPartElement.clientTop : 0);
overlayContainerElement.style.display = "block";
overlayContainerElement.style.width = webPartElement.offsetWidth;
overlayContainerElement.style.height = webPartElement.offsetHeight;
overlayContainerElement.appendChild(webPartElement.cloneNode(true));
if (webPart.allowZoneChange == false) {
webPart.zone.allowDrop = true;
}
else {
for (var i = 0; i < __wpm.zones.length; i++) {
var zone = __wpm.zones[i];
if (zone.allowLayoutChange) {
zone.allowDrop = true;
}
}
}
document.body.attachEvent("ondragover", Zone_OnDragOver);
return "move";
}
function WebPartManager_CompleteWebPartDragDrop() {
var dragState = this.dragState;
this.dragState = null;
if ((typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) {
dragState.dropZoneElement.__zone.ToggleDropCues(false, dragState.dropIndex, false);
}
document.body.detachEvent("ondragover", Zone_OnDragOver);
for (var i = 0; i < __wpm.zones.length; i++) {
__wpm.zones[i].allowDrop = false;
}
this.overlayContainerElement.removeChild(this.overlayContainerElement.firstChild);
this.overlayContainerElement.style.display = "none";
if ((typeof(dragState) != "undefined") && (dragState != null) && (dragState.dropped == true)) {
var currentZone = dragState.webPartElement.__webPart.zone;
var currentZoneIndex = dragState.webPartElement.__webPart.zoneIndex;
if ((currentZone != dragState.dropZoneElement.__zone) ||
((currentZoneIndex != dragState.dropIndex) &&
(currentZoneIndex != (dragState.dropIndex - 1)))) {
var eventTarget = dragState.dropZoneElement.__zone.uniqueID;
var eventArgument = "Drag:" + dragState.webPartElement.id + ":" + dragState.dropIndex;
this.SubmitPage(eventTarget, eventArgument);
}
}
}
function WebPartManager_ContinueWebPartDragDrop() {
var dragState = this.dragState;
if ((typeof(dragState) != "undefined") && (dragState != null)) {
var style = this.overlayContainerElement.style;
var location = __wpGetPageEventLocation(window.event, true);
style.left = location.x - dragState.webPartElement.offsetWidth / 2;
style.top = location.y + 4 + (dragState.webPartElement.clientTop ? dragState.webPartElement.clientTop : 0);
}
}
function WebPartManager_Execute(script) {
if (this.menu) {
this.menu.Hide();
}
var scriptReference = new Function(script);
return (scriptReference() != false);
}
function WebPartManager_ProcessWebPartDragEnter() {
var dragState = __wpm.dragState;
if ((typeof(dragState) != "undefined") && (dragState != null)) {
var currentEvent = window.event;
var newDropZoneElement = Zone_GetParentZoneElement(currentEvent.srcElement);
if ((typeof(newDropZoneElement.__zone) == "undefined") || (newDropZoneElement.__zone == null) ||
(newDropZoneElement.__zone.allowDrop == false)) {
newDropZoneElement = null;
}
var newDropIndex = -1;
if ((typeof(newDropZoneElement) != "undefined") && (newDropZoneElement != null)) {
newDropIndex = newDropZoneElement.__zone.GetWebPartIndex(__wpGetPageEventLocation(currentEvent, false));
if (newDropIndex == -1) {
newDropZoneElement = null;
}
}
if (dragState.dropZoneElement != newDropZoneElement) {
if ((typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) {
dragState.dropZoneElement.__zone.ToggleDropCues(false, dragState.dropIndex, false);
}
dragState.dropZoneElement = newDropZoneElement;
dragState.dropIndex = newDropIndex;
if ((typeof(newDropZoneElement) != "undefined") && (newDropZoneElement != null)) {
newDropZoneElement.__zone.ToggleDropCues(true, newDropIndex, false);
}
}
else if (dragState.dropIndex != newDropIndex) {
if (dragState.dropIndex != -1) {
dragState.dropZoneElement.__zone.ToggleDropCues(false, dragState.dropIndex, false);
}
dragState.dropIndex = newDropIndex;
if ((typeof(newDropZoneElement) != "undefined") && (newDropZoneElement != null)) {
newDropZoneElement.__zone.ToggleDropCues(true, newDropIndex, false);
}
}
if ((typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) {
currentEvent.dataTransfer.effectAllowed = dragState.effect;
}
return true;
}
return false;
}
function WebPartManager_ProcessWebPartDragOver() {
var dragState = __wpm.dragState;
var currentEvent = window.event;
var handled = false;
if ((typeof(dragState) != "undefined") && (dragState != null) &&
(typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) {
var dropZoneElement = Zone_GetParentZoneElement(currentEvent.srcElement);
if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null) && (dropZoneElement.__zone.allowDrop == false)) {
dropZoneElement = null;
}
if (((typeof(dropZoneElement) == "undefined") || (dropZoneElement == null)) &&
(typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) {
dragState.dropZoneElement.__zone.ToggleDropCues(false, __wpm.dragState.dropIndex, false);
dragState.dropZoneElement = null;
dragState.dropIndex = -1;
}
else if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null)) {
var location = __wpGetPageEventLocation(currentEvent, false);
var newDropIndex = dropZoneElement.__zone.GetWebPartIndex(location);
if (newDropIndex == -1) {
dropZoneElement = null;
}
if (dragState.dropZoneElement != dropZoneElement) {
if ((dragState.dropIndex != -1) || (typeof(dropZoneElement) == "undefined") || (dropZoneElement == null)) {
dragState.dropZoneElement.__zone.ToggleDropCues(false, __wpm.dragState.dropIndex, false);
}
dragState.dropZoneElement = dropZoneElement;
}
else {
dragState.dropZoneElement.__zone.ToggleDropCues(false, dragState.dropIndex, true);
}
dragState.dropIndex = newDropIndex;
if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null)) {
dropZoneElement.__zone.ToggleDropCues(true, newDropIndex, false);
}
}
handled = true;
}
if ((typeof(dragState) == "undefined") || (dragState == null) ||
(typeof(dragState.dropZoneElement) == "undefined") || (dragState.dropZoneElement == null)) {
currentEvent.dataTransfer.effectAllowed = "none";
}
return handled;
}
function WebPartManager_ProcessWebPartDrop() {
var dragState = this.dragState;
if ((typeof(dragState) != "undefined") && (dragState != null)) {
var currentEvent = window.event;
var dropZoneElement = Zone_GetParentZoneElement(currentEvent.srcElement);
if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null) && (dropZoneElement.__zone.allowDrop == false)) {
dropZoneElement = null;
}
if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null) && (dragState.dropZoneElement == dropZoneElement)) {
dragState.dropped = true;
}
return true;
}
return false;
}
function WebPartManager_ShowHelp(helpUrl, helpMode) {
if ((typeof(this.menu) != "undefined") && (this.menu != null)) {
this.menu.Hide();
}
if (helpMode == 0 || helpMode == 1) {
if (helpMode == 0) {
var dialogInfo = "edge: Sunken; center: yes; help: no; resizable: yes; status: no";
window.showModalDialog(helpUrl, null, dialogInfo);
}
else {
window.open(helpUrl, null, "scrollbars=yes,resizable=yes,status=no,toolbar=no,menubar=no,location=no");
}
}
else if (helpMode == 2) {
window.location = helpUrl;
}
}
function WebPartManager_ExportWebPart(exportUrl, warn, confirmOnly) {
if (warn == true && __wpmExportWarning.length > 0 && this.personalizationScopeShared != true) {
if (confirm(__wpmExportWarning) == false) {
return false;
}
}
if (confirmOnly == false) {
window.location = exportUrl;
}
return true;
}
function WebPartManager_UpdatePositions() {
for (var i = 0; i < this.zones.length; i++) {
this.zones[i].UpdatePosition();
}
}
function WebPartManager_SubmitPage(eventTarget, eventArgument) {
if ((typeof(this.menu) != "undefined") && (this.menu != null)) {
this.menu.Hide();
}
__doPostBack(eventTarget, eventArgument);
}

View File

@@ -0,0 +1,684 @@
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/WebUIValidation.js
var Page_ValidationVer = "125";
var Page_IsValid = true;
var Page_BlockSubmit = false;
var Page_InvalidControlToBeFocused = null;
var Page_TextTypes = /^(text|password|file|search|tel|url|email|number|range|color|datetime|date|month|week|time|datetime-local)$/i;
function ValidatorUpdateDisplay(val) {
if (typeof(val.display) == "string") {
if (val.display == "None") {
return;
}
if (val.display == "Dynamic") {
val.style.display = val.isvalid ? "none" : "inline";
return;
}
}
if ((navigator.userAgent.indexOf("Mac") > -1) &&
(navigator.userAgent.indexOf("MSIE") > -1)) {
val.style.display = "inline";
}
val.style.visibility = val.isvalid ? "hidden" : "visible";
}
function ValidatorUpdateIsValid() {
Page_IsValid = AllValidatorsValid(Page_Validators);
}
function AllValidatorsValid(validators) {
if ((typeof(validators) != "undefined") && (validators != null)) {
var i;
for (i = 0; i < validators.length; i++) {
if (!validators[i].isvalid) {
return false;
}
}
}
return true;
}
function ValidatorHookupControlID(controlID, val) {
if (typeof(controlID) != "string") {
return;
}
var ctrl = document.getElementById(controlID);
if ((typeof(ctrl) != "undefined") && (ctrl != null)) {
ValidatorHookupControl(ctrl, val);
}
else {
val.isvalid = true;
val.enabled = false;
}
}
function ValidatorHookupControl(control, val) {
if (typeof(control.tagName) != "string") {
return;
}
if (control.tagName != "INPUT" && control.tagName != "TEXTAREA" && control.tagName != "SELECT") {
var i;
for (i = 0; i < control.childNodes.length; i++) {
ValidatorHookupControl(control.childNodes[i], val);
}
return;
}
else {
if (typeof(control.Validators) == "undefined") {
control.Validators = new Array;
var eventType;
if (control.type == "radio") {
eventType = "onclick";
} else {
eventType = "onchange";
if (typeof(val.focusOnError) == "string" && val.focusOnError == "t") {
ValidatorHookupEvent(control, "onblur", "ValidatedControlOnBlur(event); ");
}
}
ValidatorHookupEvent(control, eventType, "ValidatorOnChange(event); ");
if (Page_TextTypes.test(control.type)) {
ValidatorHookupEvent(control, "onkeypress",
"event = event || window.event; if (!ValidatedTextBoxOnKeyPress(event)) { event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return false; } ");
}
}
control.Validators[control.Validators.length] = val;
}
}
function ValidatorHookupEvent(control, eventType, functionPrefix) {
var ev = control[eventType];
if (typeof(ev) == "function") {
ev = ev.toString();
ev = ev.substring(ev.indexOf("{") + 1, ev.lastIndexOf("}"));
}
else {
ev = "";
}
control[eventType] = new Function("event", functionPrefix + " " + ev);
}
function ValidatorGetValue(id) {
var control;
control = document.getElementById(id);
if (typeof(control.value) == "string") {
return control.value;
}
return ValidatorGetValueRecursive(control);
}
function ValidatorGetValueRecursive(control)
{
if (typeof(control.value) == "string" && (control.type != "radio" || control.checked == true)) {
return control.value;
}
var i, val;
for (i = 0; i<control.childNodes.length; i++) {
val = ValidatorGetValueRecursive(control.childNodes[i]);
if (val != "") return val;
}
return "";
}
function Page_ClientValidate(validationGroup) {
Page_InvalidControlToBeFocused = null;
if (typeof(Page_Validators) == "undefined") {
return true;
}
var i;
for (i = 0; i < Page_Validators.length; i++) {
ValidatorValidate(Page_Validators[i], validationGroup, null);
}
ValidatorUpdateIsValid();
ValidationSummaryOnSubmit(validationGroup);
Page_BlockSubmit = !Page_IsValid;
return Page_IsValid;
}
function ValidatorCommonOnSubmit() {
Page_InvalidControlToBeFocused = null;
var result = !Page_BlockSubmit;
if ((typeof(window.event) != "undefined") && (window.event != null)) {
window.event.returnValue = result;
}
Page_BlockSubmit = false;
return result;
}
function ValidatorEnable(val, enable) {
val.enabled = (enable != false);
ValidatorValidate(val);
ValidatorUpdateIsValid();
}
function ValidatorOnChange(event) {
event = event || window.event;
Page_InvalidControlToBeFocused = null;
var targetedControl;
if ((typeof(event.srcElement) != "undefined") && (event.srcElement != null)) {
targetedControl = event.srcElement;
}
else {
targetedControl = event.target;
}
var vals;
if (typeof(targetedControl.Validators) != "undefined") {
vals = targetedControl.Validators;
}
else {
if (targetedControl.tagName.toLowerCase() == "label") {
targetedControl = document.getElementById(targetedControl.htmlFor);
vals = targetedControl.Validators;
}
}
if (vals) {
for (var i = 0; i < vals.length; i++) {
ValidatorValidate(vals[i], null, event);
}
}
ValidatorUpdateIsValid();
}
function ValidatedTextBoxOnKeyPress(event) {
event = event || window.event;
if (event.keyCode == 13) {
ValidatorOnChange(event);
var vals;
if ((typeof(event.srcElement) != "undefined") && (event.srcElement != null)) {
vals = event.srcElement.Validators;
}
else {
vals = event.target.Validators;
}
return AllValidatorsValid(vals);
}
return true;
}
function ValidatedControlOnBlur(event) {
event = event || window.event;
var control;
if ((typeof(event.srcElement) != "undefined") && (event.srcElement != null)) {
control = event.srcElement;
}
else {
control = event.target;
}
if ((typeof(control) != "undefined") && (control != null) && (Page_InvalidControlToBeFocused == control)) {
control.focus();
Page_InvalidControlToBeFocused = null;
}
}
function ValidatorValidate(val, validationGroup, event) {
val.isvalid = true;
if ((typeof(val.enabled) == "undefined" || val.enabled != false) && IsValidationGroupMatch(val, validationGroup)) {
if (typeof(val.evaluationfunction) == "function") {
val.isvalid = val.evaluationfunction(val);
if (!val.isvalid && Page_InvalidControlToBeFocused == null &&
typeof(val.focusOnError) == "string" && val.focusOnError == "t") {
ValidatorSetFocus(val, event);
}
}
}
ValidatorUpdateDisplay(val);
}
function ValidatorSetFocus(val, event) {
var ctrl;
if (typeof(val.controlhookup) == "string") {
var eventCtrl;
if ((typeof(event) != "undefined") && (event != null)) {
if ((typeof(event.srcElement) != "undefined") && (event.srcElement != null)) {
eventCtrl = event.srcElement;
}
else {
eventCtrl = event.target;
}
}
if ((typeof(eventCtrl) != "undefined") && (eventCtrl != null) &&
(typeof(eventCtrl.id) == "string") &&
(eventCtrl.id == val.controlhookup)) {
ctrl = eventCtrl;
}
}
if ((typeof(ctrl) == "undefined") || (ctrl == null)) {
ctrl = document.getElementById(val.controltovalidate);
}
if ((typeof(ctrl) != "undefined") && (ctrl != null) &&
(ctrl.tagName.toLowerCase() != "table" || (typeof(event) == "undefined") || (event == null)) &&
((ctrl.tagName.toLowerCase() != "input") || (ctrl.type.toLowerCase() != "hidden")) &&
(typeof(ctrl.disabled) == "undefined" || ctrl.disabled == null || ctrl.disabled == false) &&
(typeof(ctrl.visible) == "undefined" || ctrl.visible == null || ctrl.visible != false) &&
(IsInVisibleContainer(ctrl))) {
if ((ctrl.tagName.toLowerCase() == "table" && (typeof(__nonMSDOMBrowser) == "undefined" || __nonMSDOMBrowser)) ||
(ctrl.tagName.toLowerCase() == "span")) {
var inputElements = ctrl.getElementsByTagName("input");
var lastInputElement = inputElements[inputElements.length -1];
if (lastInputElement != null) {
ctrl = lastInputElement;
}
}
if (typeof(ctrl.focus) != "undefined" && ctrl.focus != null) {
ctrl.focus();
Page_InvalidControlToBeFocused = ctrl;
}
}
}
function IsInVisibleContainer(ctrl) {
if (typeof(ctrl.style) != "undefined" &&
( ( typeof(ctrl.style.display) != "undefined" &&
ctrl.style.display == "none") ||
( typeof(ctrl.style.visibility) != "undefined" &&
ctrl.style.visibility == "hidden") ) ) {
return false;
}
else if (typeof(ctrl.parentNode) != "undefined" &&
ctrl.parentNode != null &&
ctrl.parentNode != ctrl) {
return IsInVisibleContainer(ctrl.parentNode);
}
return true;
}
function IsValidationGroupMatch(control, validationGroup) {
if ((typeof(validationGroup) == "undefined") || (validationGroup == null)) {
return true;
}
var controlGroup = "";
if (typeof(control.validationGroup) == "string") {
controlGroup = control.validationGroup;
}
return (controlGroup == validationGroup);
}
function ValidatorOnLoad() {
if (typeof(Page_Validators) == "undefined")
return;
var i, val;
for (i = 0; i < Page_Validators.length; i++) {
val = Page_Validators[i];
if (typeof(val.evaluationfunction) == "string") {
eval("val.evaluationfunction = " + val.evaluationfunction + ";");
}
if (typeof(val.isvalid) == "string") {
if (val.isvalid == "False") {
val.isvalid = false;
Page_IsValid = false;
}
else {
val.isvalid = true;
}
} else {
val.isvalid = true;
}
if (typeof(val.enabled) == "string") {
val.enabled = (val.enabled != "False");
}
if (typeof(val.controltovalidate) == "string") {
ValidatorHookupControlID(val.controltovalidate, val);
}
if (typeof(val.controlhookup) == "string") {
ValidatorHookupControlID(val.controlhookup, val);
}
}
Page_ValidationActive = true;
}
function ValidatorConvert(op, dataType, val) {
function GetFullYear(year) {
var twoDigitCutoffYear = val.cutoffyear % 100;
var cutoffYearCentury = val.cutoffyear - twoDigitCutoffYear;
return ((year > twoDigitCutoffYear) ? (cutoffYearCentury - 100 + year) : (cutoffYearCentury + year));
}
var num, cleanInput, m, exp;
if (dataType == "Integer") {
exp = /^\s*[-\+]?\d+\s*$/;
if (op.match(exp) == null)
return null;
num = parseInt(op, 10);
return (isNaN(num) ? null : num);
}
else if(dataType == "Double") {
exp = new RegExp("^\\s*([-\\+])?(\\d*)\\" + val.decimalchar + "?(\\d*)\\s*$");
m = op.match(exp);
if (m == null)
return null;
if (m[2].length == 0 && m[3].length == 0)
return null;
cleanInput = (m[1] != null ? m[1] : "") + (m[2].length>0 ? m[2] : "0") + (m[3].length>0 ? "." + m[3] : "");
num = parseFloat(cleanInput);
return (isNaN(num) ? null : num);
}
else if (dataType == "Currency") {
var hasDigits = (val.digits > 0);
var beginGroupSize, subsequentGroupSize;
var groupSizeNum = parseInt(val.groupsize, 10);
if (!isNaN(groupSizeNum) && groupSizeNum > 0) {
beginGroupSize = "{1," + groupSizeNum + "}";
subsequentGroupSize = "{" + groupSizeNum + "}";
}
else {
beginGroupSize = subsequentGroupSize = "+";
}
exp = new RegExp("^\\s*([-\\+])?((\\d" + beginGroupSize + "(\\" + val.groupchar + "\\d" + subsequentGroupSize + ")+)|\\d*)"
+ (hasDigits ? "\\" + val.decimalchar + "?(\\d{0," + val.digits + "})" : "")
+ "\\s*$");
m = op.match(exp);
if (m == null)
return null;
if (m[2].length == 0 && hasDigits && m[5].length == 0)
return null;
cleanInput = (m[1] != null ? m[1] : "") + m[2].replace(new RegExp("(\\" + val.groupchar + ")", "g"), "") + ((hasDigits && m[5].length > 0) ? "." + m[5] : "");
num = parseFloat(cleanInput);
return (isNaN(num) ? null : num);
}
else if (dataType == "Date") {
var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([-/]|\\. ?)(\\d{1,2})\\4(\\d{1,2})\\.?\\s*$");
m = op.match(yearFirstExp);
var day, month, year;
if (m != null && (((typeof(m[2]) != "undefined") && (m[2].length == 4)) || val.dateorder == "ymd")) {
day = m[6];
month = m[5];
year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));
}
else {
if (val.dateorder == "ymd"){
return null;
}
var yearLastExp = new RegExp("^\\s*(\\d{1,2})([-/]|\\. ?)(\\d{1,2})(?:\\s|\\2)((\\d{4})|(\\d{2}))(?:\\s\u0433\\.|\\.)?\\s*$");
m = op.match(yearLastExp);
if (m == null) {
return null;
}
if (val.dateorder == "mdy") {
day = m[3];
month = m[1];
}
else {
day = m[1];
month = m[3];
}
year = ((typeof(m[5]) != "undefined") && (m[5].length == 4)) ? m[5] : GetFullYear(parseInt(m[6], 10));
}
month -= 1;
var date = new Date(year, month, day);
if (year < 100) {
date.setFullYear(year);
}
return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate()) ? date.valueOf() : null;
}
else {
return op.toString();
}
}
function ValidatorCompare(operand1, operand2, operator, val) {
var dataType = val.type;
var op1, op2;
if ((op1 = ValidatorConvert(operand1, dataType, val)) == null)
return false;
if (operator == "DataTypeCheck")
return true;
if ((op2 = ValidatorConvert(operand2, dataType, val)) == null)
return true;
switch (operator) {
case "NotEqual":
return (op1 != op2);
case "GreaterThan":
return (op1 > op2);
case "GreaterThanEqual":
return (op1 >= op2);
case "LessThan":
return (op1 < op2);
case "LessThanEqual":
return (op1 <= op2);
default:
return (op1 == op2);
}
}
function CompareValidatorEvaluateIsValid(val) {
var value = ValidatorGetValue(val.controltovalidate);
if (ValidatorTrim(value).length == 0)
return true;
var compareTo = "";
if ((typeof(val.controltocompare) != "string") ||
(typeof(document.getElementById(val.controltocompare)) == "undefined") ||
(null == document.getElementById(val.controltocompare))) {
if (typeof(val.valuetocompare) == "string") {
compareTo = val.valuetocompare;
}
}
else {
compareTo = ValidatorGetValue(val.controltocompare);
}
var operator = "Equal";
if (typeof(val.operator) == "string") {
operator = val.operator;
}
return ValidatorCompare(value, compareTo, operator, val);
}
function CustomValidatorEvaluateIsValid(val) {
var value = "";
if (typeof(val.controltovalidate) == "string") {
value = ValidatorGetValue(val.controltovalidate);
if ((ValidatorTrim(value).length == 0) &&
((typeof(val.validateemptytext) != "string") || (val.validateemptytext != "true"))) {
return true;
}
}
var args = { Value:value, IsValid:true };
if (typeof(val.clientvalidationfunction) == "string") {
eval(val.clientvalidationfunction + "(val, args) ;");
}
return args.IsValid;
}
function RegularExpressionValidatorEvaluateIsValid(val) {
var value = ValidatorGetValue(val.controltovalidate);
if (ValidatorTrim(value).length == 0)
return true;
var rx = new RegExp(val.validationexpression);
var matches = rx.exec(value);
return (matches != null && value == matches[0]);
}
function ValidatorTrim(s) {
var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
return (m == null) ? "" : m[1];
}
function RequiredFieldValidatorEvaluateIsValid(val) {
return (ValidatorTrim(ValidatorGetValue(val.controltovalidate)) != ValidatorTrim(val.initialvalue))
}
function RangeValidatorEvaluateIsValid(val) {
var value = ValidatorGetValue(val.controltovalidate);
if (ValidatorTrim(value).length == 0)
return true;
return (ValidatorCompare(value, val.minimumvalue, "GreaterThanEqual", val) &&
ValidatorCompare(value, val.maximumvalue, "LessThanEqual", val));
}
function ValidationSummaryOnSubmit(validationGroup) {
if (typeof(Page_ValidationSummaries) == "undefined")
return;
var summary, sums, s;
var headerSep, first, pre, post, end;
for (sums = 0; sums < Page_ValidationSummaries.length; sums++) {
summary = Page_ValidationSummaries[sums];
if (!summary) continue;
summary.style.display = "none";
if (!Page_IsValid && IsValidationGroupMatch(summary, validationGroup)) {
var i;
if (summary.showsummary != "False") {
summary.style.display = "";
if (typeof(summary.displaymode) != "string") {
summary.displaymode = "BulletList";
}
switch (summary.displaymode) {
case "List":
headerSep = "<br>";
first = "";
pre = "";
post = "<br>";
end = "";
break;
case "BulletList":
default:
headerSep = "";
first = "<ul>";
pre = "<li>";
post = "</li>";
end = "</ul>";
break;
case "SingleParagraph":
headerSep = " ";
first = "";
pre = "";
post = " ";
end = "<br>";
break;
}
s = "";
if (typeof(summary.headertext) == "string") {
s += summary.headertext + headerSep;
}
s += first;
for (i=0; i<Page_Validators.length; i++) {
if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string") {
s += pre + Page_Validators[i].errormessage + post;
}
}
s += end;
summary.innerHTML = s;
window.scrollTo(0,0);
}
if (summary.showmessagebox == "True") {
s = "";
if (typeof(summary.headertext) == "string") {
s += summary.headertext + "\r\n";
}
var lastValIndex = Page_Validators.length - 1;
for (i=0; i<=lastValIndex; i++) {
if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string") {
switch (summary.displaymode) {
case "List":
s += Page_Validators[i].errormessage;
if (i < lastValIndex) {
s += "\r\n";
}
break;
case "BulletList":
default:
s += "- " + Page_Validators[i].errormessage;
if (i < lastValIndex) {
s += "\r\n";
}
break;
case "SingleParagraph":
s += Page_Validators[i].errormessage + " ";
break;
}
}
}
alert(s);
}
}
}
}
if (window.jQuery) {
(function ($) {
var dataValidationAttribute = "data-val",
dataValidationSummaryAttribute = "data-valsummary",
normalizedAttributes = { validationgroup: "validationGroup", focusonerror: "focusOnError" };
function getAttributesWithPrefix(element, prefix) {
var i,
attribute,
list = {},
attributes = element.attributes,
length = attributes.length,
prefixLength = prefix.length;
prefix = prefix.toLowerCase();
for (i = 0; i < length; i++) {
attribute = attributes[i];
if (attribute.specified && attribute.name.substr(0, prefixLength).toLowerCase() === prefix) {
list[attribute.name.substr(prefixLength)] = attribute.value;
}
}
return list;
}
function normalizeKey(key) {
key = key.toLowerCase();
return normalizedAttributes[key] === undefined ? key : normalizedAttributes[key];
}
function addValidationExpando(element) {
var attributes = getAttributesWithPrefix(element, dataValidationAttribute + "-");
$.each(attributes, function (key, value) {
element[normalizeKey(key)] = value;
});
}
function dispose(element) {
var index = $.inArray(element, Page_Validators);
if (index >= 0) {
Page_Validators.splice(index, 1);
}
}
function addNormalizedAttribute(name, normalizedName) {
normalizedAttributes[name.toLowerCase()] = normalizedName;
}
function parseSpecificAttribute(selector, attribute, validatorsArray) {
return $(selector).find("[" + attribute + "='true']").each(function (index, element) {
addValidationExpando(element);
element.dispose = function () { dispose(element); element.dispose = null; };
if ($.inArray(element, validatorsArray) === -1) {
validatorsArray.push(element);
}
}).length;
}
function parse(selector) {
var length = parseSpecificAttribute(selector, dataValidationAttribute, Page_Validators);
length += parseSpecificAttribute(selector, dataValidationSummaryAttribute, Page_ValidationSummaries);
return length;
}
function loadValidators() {
if (typeof (ValidatorOnLoad) === "function") {
ValidatorOnLoad();
}
if (typeof (ValidatorOnSubmit) === "undefined") {
window.ValidatorOnSubmit = function () {
return Page_ValidationActive ? ValidatorCommonOnSubmit() : true;
};
}
}
function registerUpdatePanel() {
if (window.Sys && Sys.WebForms && Sys.WebForms.PageRequestManager) {
var prm = Sys.WebForms.PageRequestManager.getInstance(),
postBackElement, endRequestHandler;
if (prm.get_isInAsyncPostBack()) {
endRequestHandler = function (sender, args) {
if (parse(document)) {
loadValidators();
}
prm.remove_endRequest(endRequestHandler);
endRequestHandler = null;
};
prm.add_endRequest(endRequestHandler);
}
prm.add_beginRequest(function (sender, args) {
postBackElement = args.get_postBackElement();
});
prm.add_pageLoaded(function (sender, args) {
var i, panels, valFound = 0;
if (typeof (postBackElement) === "undefined") {
return;
}
panels = args.get_panelsUpdated();
for (i = 0; i < panels.length; i++) {
valFound += parse(panels[i]);
}
panels = args.get_panelsCreated();
for (i = 0; i < panels.length; i++) {
valFound += parse(panels[i]);
}
if (valFound) {
loadValidators();
}
});
}
}
$(function () {
if (typeof (Page_Validators) === "undefined") {
window.Page_Validators = [];
}
if (typeof (Page_ValidationSummaries) === "undefined") {
window.Page_ValidationSummaries = [];
}
if (typeof (Page_ValidationActive) === "undefined") {
window.Page_ValidationActive = false;
}
$.WebFormValidator = {
addNormalizedAttribute: addNormalizedAttribute,
parse: parse
};
if (parse(document)) {
loadValidators();
}
registerUpdatePanel();
});
} (jQuery));
}

2580
api/Scripts/bootstrap.js vendored Normal file

File diff suppressed because it is too large Load Diff

6
api/Scripts/bootstrap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

2670
api/Scripts/jquery-3.4.1.intellisense.js vendored Normal file

File diff suppressed because it is too large Load Diff

10598
api/Scripts/jquery-3.4.1.js vendored Normal file

File diff suppressed because it is too large Load Diff

2
api/Scripts/jquery-3.4.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

2
api/Scripts/jquery-3.4.1.slim.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1406
api/Scripts/modernizr-2.8.3.js vendored Normal file

File diff suppressed because it is too large Load Diff

73
api/Site.Master Normal file
View File

@@ -0,0 +1,73 @@
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="api.SiteMaster" %>
<!DOCTYPE html>
<html lang="zh">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title><%: Page.Title %> - 我的 ASP.NET 應用程式</title>
<asp:ContentPlaceHolder runat="server" ID="HeadContent"></asp:ContentPlaceHolder>
<asp:PlaceHolder runat="server" >
<%: Scripts.Render("~/bundles/modernizr") %>
</asp:PlaceHolder>
<webopt:bundlereference runat="server" path="~/Content/css" />
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
</head>
<body>
<form runat="server">
<asp:ScriptManager runat="server">
<Scripts>
<%--To learn more about bundling scripts in ScriptManager see https://go.microsoft.com/fwlink/?LinkID=301884 --%>
<%--Framework Scripts--%>
<asp:ScriptReference Name="MsAjaxBundle" />
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="bootstrap" />
<asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
<asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
<asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
<asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
<asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
<asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
<asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" />
<asp:ScriptReference Name="WebFormsBundle" />
<%--Site Scripts--%>
</Scripts>
</asp:ScriptManager>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" runat="server" href="~/">應用程式名稱</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a runat="server" href="~/">首頁</a></li>
<li><a runat="server" href="~/About">關於</a></li>
<li><a runat="server" href="~/Contact">連絡人</a></li>
</ul>
</div>
</div>
</div>
<div class="container body-content">
<asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder>
<hr />
<footer>
<p>&copy; <%: DateTime.Now.Year %> - 我的 ASP.NET 應用程式</p>
</footer>
</div>
</form>
</body>
</html>

17
api/Site.Master.cs Normal file
View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace api
{
public partial class SiteMaster : MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}

35
api/Site.Master.designer.cs generated Normal file
View File

@@ -0,0 +1,35 @@
//------------------------------------------------------------------------------
// <自動產生的>
// 這段程式碼是由工具產生的。
//
// 變更這個檔案可能會導致不正確的行為,而且如果已重新產生
// 程式碼,則會遺失變更。
// </自動產生的>
//------------------------------------------------------------------------------
namespace api
{
public partial class SiteMaster
{
/// <summary>
/// HeadContent 控制項。
/// </summary>
/// <remarks>
/// 自動產生的欄位。
/// 若要修改,請將欄位宣告從設計工具檔案移到程式碼後置檔案。
/// </remarks>
protected global::System.Web.UI.WebControls.ContentPlaceHolder HeadContent;
/// <summary>
/// MainContent 控制項。
/// </summary>
/// <remarks>
/// 自動產生的欄位。
/// 若要修改,請將欄位宣告從設計工具檔案移到程式碼後置檔案。
/// </remarks>
protected global::System.Web.UI.WebControls.ContentPlaceHolder MainContent;
}
}

23
api/Site.Mobile.Master Normal file
View File

@@ -0,0 +1,23 @@
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.Mobile.master.cs" Inherits="api.Site_Mobile" %>
<%@ Register Src="~/ViewSwitcher.ascx" TagPrefix="friendlyUrls" TagName="ViewSwitcher" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta name="viewport" content="width=device-width" />
<title></title>
<asp:ContentPlaceHolder runat="server" ID="HeadContent" />
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Mobile Master Page</h1>
<asp:ContentPlaceHolder runat="server" ID="FeaturedContent" />
<section class="content-wrapper main-content clear-fix">
<asp:ContentPlaceHolder runat="server" ID="MainContent" />
</section>
<friendlyUrls:ViewSwitcher runat="server" />
</div>
</form>
</body>
</html>

17
api/Site.Mobile.Master.cs Normal file
View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace api
{
public partial class Site_Mobile : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}

51
api/Site.Mobile.Master.designer.cs generated Normal file
View File

@@ -0,0 +1,51 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace api {
public partial class Site_Mobile {
/// <summary>
/// HeadContent control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.ContentPlaceHolder HeadContent;
/// <summary>
/// form1 control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// FeaturedContent control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.ContentPlaceHolder FeaturedContent;
/// <summary>
/// MainContent control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.ContentPlaceHolder MainContent;
}
}

120
api/UseCSS/alert2.css Normal file
View File

@@ -0,0 +1,120 @@
/*全屏遮罩*/
.AlertBoxDiv {
opacity: 0;
position: fixed;
z-index: 5100;
width: 100%;
height: 100%;
top: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.1);
}
.AlertBoxDiv table {
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0);
}
.AlertBoxDiv table tr td {
vertical-align: middle;
}
/*視窗容器*/
.AlertBoxDivContent {
width: 95%;
max-width: 500px;
word-wrap: break-word;
background-color: #fff;
margin-top: -20px;
margin-right: auto;
margin-bottom: 20px;
margin-left: auto;
box-shadow: 0 6px 10px -5px rgba(0, 0, 0, 0.5);
border-radius: 3px;
}
/*視窗容器 標題區塊*/
.AlertBoxDivContent .AlertBoxDivTitle {
padding: 10px 15px;
text-align: left;
color: #fff;
background-color: #b04d67;
font-size: 18px;
border-radius: 3px 3px 0 0;
}
/*視窗容器 內容區塊*/
.AlertBoxDivContent .AlertBoxDivHtml {
padding: 15px;
text-align: left;
min-height: 50px;
/*max-height: 400px;*/
/*overflow: auto;*/
}
/*視窗容器 控制區塊*/
.AlertBoxDivContent .AlertBoxDivCtrl {
padding: 5px;
text-align: right;
border-top: 1px dashed #d3d3d3;
}
/*視窗容器 關閉icon*/
.AlertBoxDivContent .AlertBoxDivCloseIcon {
opacity: 0.7;
float: right;
font-size: 23px;
cursor: pointer;
position: relative;
}
@media screen and (min-width: 1025px) {
.AlertBoxDivContent .AlertBoxDivCloseIcon:hover {
opacity: 1;
}
.AlertBoxDivContent .AlertBoxDivCloseIcon:active {
opacity: 0.7;
}
}
@media screen and (min-width: 1920px) {
.AlertBoxDivContent {
zoom: 1.25;
}
}
/*視窗容器 進度條文字*/
.AlertBoxDivContent .AlertBoxDivHtmlText {
text-align: center;
}
/*進度條*/
.ProgressBar {
margin-top: 10px;
background-color: #f1f1f1;
width: 100%;
height: 18px;
line-height: 18px;
position: relative;
font-size: 12px;
border-radius: 3px;
overflow: hidden;
}
.ProgressBar .ProgressBar2 {
height: 100%;
background-color: #0094ff;
position: absolute;
border-radius: 0 3px 3px 0;
/*transition: linear 0.2s;*/
}
.ProgressBar .ProgressBarWord {
width: 100%;
text-align: center;
position: absolute;
color: #fff;
text-shadow: 0 0 1px #000,0 0 1px #000,0 0 1px #000,0 0 1px #000;
}

764
api/UseCSS/button2.css Normal file
View File

@@ -0,0 +1,764 @@
/*
會衝突舊版本
宣告按鈕 button (button_o) [button_l]
傳統 (框線) [底線]
透明 [btn_space_l]
白色 btn_white (btn_white_o)
藍色 btn_blue (btn_blue_o)
天空藍 btn_sky (btn_sky_o) [btn_sky_l]
綠色 btn_green (btn_green_o)
初音綠 btn_miku (btn_miku_o)
墨綠 btn_darkgreen (btn_darkgreen_o)
黃色 btn_yellow (btn_yellow_o)
紅色 btn_red (btn_red_o)
紫色 btn_purple (btn_purple_o)
鐵灰色 btn_iron (btn_iron_o)
桃紫色 btn_peach (btn_peach_o)
橘色 btn_orange (btn_orange_o)
粉紅色 btn_pink (btn_pink_o)
尺寸縮小 btn_s
尺寸放大 btn_lg
範例: <button type="button" class="button btn_blue">按鈕</button>
<button type="button" class="button_o btn_blue_o btn_s">按鈕</button>
<a href="" class="button btn_miku btn_lg">連結按鈕</a>
*/
button {
font-family: 'Noto Sans TC',sans-serif;
margin: 0;
}
/*傳統*/
.button {
border: 0;
cursor: pointer;
font-size: 16px;
padding: 5px 10px;
border-radius: 5px;
/*outline: none;*/
position: relative;
overflow: hidden;
outline-color: #6192c8;
}
@media screen and (min-width: 1025px) {
.button:hover::after {
content: '';
top: 0;
left: 0;
position: absolute;
width: 100%;
height: 100%;
/*background-color: rgba(255, 255, 255, 0.1);*/
background-image: linear-gradient(to top,rgb(255, 255, 255,0.2) 0%,rgba(255, 255, 255, 0.1) 50%,rgba(255, 255, 255, 0) 100%);
}
}
.button:active::after {
background-color: rgba(255, 255, 255, 0.1);
}
/*框線*/
.button_o {
border: 0;
cursor: pointer;
font-size: 16px;
padding: 3px 8px;
border-radius: 3px;
outline: none;
position: relative;
overflow: hidden;
}
@media screen and (min-width: 1025px) {
.button_o:hover::after {
content: '';
top: 0;
left: 0;
position: absolute;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0);
}
.button_o:active::after {
background-color: rgba(0, 0, 0, 0.1);
}
}
/*底線*/
.button_l {
border: 0;
cursor: pointer;
font-size: 16px;
padding: 5px 10px;
outline: none;
position: relative;
overflow: hidden;
}
.button_l i {
color: #0094ff;
}
@media screen and (min-width: 1025px) {
.button_l:hover {
color: #505050;
}
.button_l:hover i {
color: #0072c4;
}
}
a.button_l:link,
a.button_l:visited,
a.button_l:active {
color: initial;
}
@media screen and (min-width: 1025px) {
a.button_l:hover {
color: #ff6a00;
}
}
.btn_s {
font-size: 12px;
padding: 3px 8px;
border-radius: 2px;
}
.btn_lg {
font-size: 20px;
padding: 7px 12px;
}
/*底線專用*/
.button_l {
padding: 3px;
}
/*透明 btn_space*/
.btn_space_l {
border: 0;
background-color: rgba(0, 0, 0, 0);
}
@media screen and (min-width: 1025px) {
.btn_space_l:hover {
background-color: rgba(0, 0, 0, 0);
}
}
/*白色 btn_white*/
.btn_white {
color: #505050;
background-color: #f5f5f5;
}
.btn_white_o {
color: #505050;
background-color: #fff;
border: 1px solid #d3d3d3;
}
@media screen and (min-width: 1025px) {
.btn_white_o:hover {
color: #505050;
background-color: #f5f5f5;
}
}
a.btn_white:link,
a.btn_white:visited {
color: #505050;
}
@media screen and (min-width: 1025px) {
a.btn_white:active,
a.btn_white:hover {
color: #505050;
}
}
a.btn_white_o:link,
a.btn_white_o:visited {
color: #505050;
}
@media screen and (min-width: 1025px) {
a.btn_white_o:hover,
a.btn_white_o:active {
color: #505050;
}
}
/*藍色 btn_blue*/
.btn_blue {
color: #fff;
background-color: #337ab7;
}
.btn_blue_o {
color: #337ab7;
background-color: #fff;
border: 1px solid #337ab7;
}
@media screen and (min-width: 1025px) {
.btn_blue_o:hover {
color: #fff;
background-color: #337ab7;
}
}
a.btn_blue:link,
a.btn_blue:visited {
color: #fff;
}
@media screen and (min-width: 1025px) {
a.btn_blue:active,
a.btn_blue:hover {
color: #fff;
}
}
a.btn_blue_o:link,
a.btn_blue_o:visited {
color: #337ab7;
}
@media screen and (min-width: 1025px) {
a.btn_blue_o:hover,
a.btn_blue_o:active {
color: #fff;
}
}
/*天空藍 btn_sky*/
.btn_sky {
color: #fff;
background-color: #3388ff;
}
.btn_sky_o {
color: #3388ff;
background-color: #fff;
border: 1px solid #3388ff;
}
@media screen and (min-width: 1025px) {
.btn_sky_o:hover {
color: #fff;
background-color: #3388ff;
}
}
.btn_sky_l {
border: 0;
border-bottom: 1px solid #d3d3d3;
margin: 0 0 1px 0;
background-color: rgba(0, 0, 0, 0);
}
@media screen and (min-width: 1025px) {
.btn_sky_l:hover {
border-bottom: 2px solid #c86e86;
margin: 0 0 0 0;
background-color: rgba(0, 0, 0, 0);
}
}
a.btn_sky:link,
a.btn_sky:visited {
color: #fff;
}
@media screen and (min-width: 1025px) {
a.btn_sky:active,
a.btn_sky:hover {
color: #fff;
}
}
a.btn_sky_o:link,
a.btn_sky_o:visited {
color: #3388ff;
}
@media screen and (min-width: 1025px) {
a.btn_sky_o:hover,
a.btn_sky_o:active {
color: #fff;
}
}
/*綠色 btn_green*/
.btn_green {
color: #fff;
background-color: #009149;
}
.btn_green_o {
color: #009149;
background-color: #fff;
border: 1px solid #009149;
}
@media screen and (min-width: 1025px) {
.btn_green_o:hover {
color: #fff;
background-color: #009149;
}
}
a.btn_green:link,
a.btn_green:visited {
color: #fff;
}
@media screen and (min-width: 1025px) {
a.btn_green:active,
a.btn_green:hover {
color: #fff;
}
}
a.btn_green_o:link,
a.btn_green_o:visited {
color: #009149;
}
@media screen and (min-width: 1025px) {
a.btn_green_o:hover,
a.btn_green_o:active {
color: #fff;
}
}
/*初音綠 btn_miku*/
.btn_miku {
color: #fff;
background-color: #0098a1;
}
.btn_miku_o {
color: #0098a1;
background-color: #fff;
border: 1px solid #0098a1;
}
@media screen and (min-width: 1025px) {
.btn_miku_o:hover {
color: #fff;
background-color: #0098a1;
}
}
a.btn_miku:link,
a.btn_miku:visited {
color: #fff;
}
@media screen and (min-width: 1025px) {
a.btn_miku:active,
a.btn_miku:hover {
color: #fff;
}
}
a.btn_miku_o:link,
a.btn_miku_o:visited {
color: #0098a1;
}
@media screen and (min-width: 1025px) {
a.btn_miku_o:hover,
a.btn_miku_o:active {
color: #fff;
}
}
/*墨綠 btn_darkgreen*/
.btn_darkgreen {
color: #fff;
background-color: #2f8966;
}
.btn_darkgreen_o {
color: #2f8966;
background-color: #fff;
border: 1px solid #2f8966;
}
@media screen and (min-width: 1025px) {
.btn_darkgreen_o:hover {
color: #fff;
background-color: #2f8966;
}
}
a.btn_darkgreen:link,
a.btn_darkgreen:visited {
color: #fff;
}
@media screen and (min-width: 1025px) {
a.btn_darkgreen:active,
a.btn_darkgreen:hover {
color: #fff;
}
}
a.btn_darkgreen_o:link,
a.btn_darkgreen_o:visited {
color: #2f8966;
}
@media screen and (min-width: 1025px) {
a.btn_darkgreen_o:hover,
a.btn_darkgreen_o:active {
color: #fff;
}
}
/*黃色 btn_yellow*/
.btn_yellow {
color: #fff;
background-color: #f6a800;
}
.btn_yellow_o {
color: #f6a800;
background-color: #fff;
border: 1px solid #f6a800;
}
@media screen and (min-width: 1025px) {
.btn_yellow_o:hover {
color: #fff;
background-color: #f6a800;
}
}
a.btn_yellow:link,
a.btn_yellow:visited {
color: #fff;
}
@media screen and (min-width: 1025px) {
a.btn_yellow:active,
a.btn_yellow:hover {
color: #fff;
}
}
a.btn_yellow_o:link,
a.btn_yellow_o:visited {
color: #f6a800;
}
@media screen and (min-width: 1025px) {
a.btn_yellow_o:hover,
a.btn_yellow_o:active {
color: #fff;
}
}
/*紅色 btn_red*/
.btn_red {
color: #fff;
background-color: #e53534;
}
.btn_red_o {
color: #e53534;
background-color: #fff;
border: 1px solid #e53534;
}
@media screen and (min-width: 1025px) {
.btn_red_o:hover {
color: #fff;
background-color: #e53534;
}
}
a.btn_red:link,
a.btn_red:visited {
color: #fff;
}
@media screen and (min-width: 1025px) {
a.btn_red:active,
a.btn_red:hover {
color: #fff;
}
}
a.btn_red_o:link,
a.btn_red_o:visited {
color: #e53534;
}
@media screen and (min-width: 1025px) {
a.btn_red_o:hover,
a.btn_red_o:active {
color: #fff;
}
}
/*紫色 btn_purple*/
.btn_purple {
color: #fff;
background-color: #572381;
}
.btn_purple_o {
color: #572381;
background-color: #fff;
border: 1px solid #572381;
}
@media screen and (min-width: 1025px) {
.btn_purple_o:hover {
color: #fff;
background-color: #572381;
}
}
a.btn_purple:link,
a.btn_purple:visited {
color: #fff;
}
@media screen and (min-width: 1025px) {
a.btn_purple:active,
a.btn_purple:hover {
color: #fff;
}
}
a.btn_purple_o:link,
a.btn_purple_o:visited {
color: #572381;
}
@media screen and (min-width: 1025px) {
a.btn_purple_o:hover,
a.btn_purple_o:active {
color: #fff;
}
}
/*鐵灰色 btn_iron*/
.btn_iron {
color: #fff;
background-color: #3e3e3e;
}
.btn_iron_o {
color: #3e3e3e;
background-color: #fff;
border: 1px solid #3e3e3e;
}
@media screen and (min-width: 1025px) {
.btn_iron_o:hover {
color: #fff;
background-color: #3e3e3e;
}
}
a.btn_iron:link,
a.btn_iron:visited {
color: #fff;
}
@media screen and (min-width: 1025px) {
a.btn_iron:active,
a.btn_iron:hover {
color: #fff;
}
}
a.btn_iron_o:link,
a.btn_iron_o:visited {
color: #3e3e3e;
}
@media screen and (min-width: 1025px) {
a.btn_iron_o:hover,
a.btn_iron_o:active {
color: #fff;
}
}
/*桃紅色 btn_peach*/
.btn_peach {
color: #fff;
background-color: #c86e86;
}
.btn_peach_o {
color: #c86e86;
background-color: #fff;
border: 1px solid #c86e86;
}
@media screen and (min-width: 1025px) {
.btn_peach_o:hover {
color: #fff;
background-color: #c86e86;
}
}
a.btn_peach:link,
a.btn_peach:visited {
color: #fff;
}
@media screen and (min-width: 1025px) {
a.btn_peach:active,
a.btn_peach:hover {
color: #fff;
}
}
a.btn_peach_o:link,
a.btn_peach_o:visited {
color: #c86e86;
}
@media screen and (min-width: 1025px) {
a.btn_peach_o:hover,
a.btn_peach_o:active {
color: #fff;
}
}
/*橘色 btn_orange*/
.btn_orange {
color: #fff;
background-color: #ec7405;
}
.btn_orange_o {
color: #ec7405;
background-color: #fff;
border: 1px solid #ec7405;
}
@media screen and (min-width: 1025px) {
.btn_orange_o:hover {
color: #fff;
background-color: #ec7405;
}
}
a.btn_orange:link,
a.btn_orange:visited {
color: #fff;
}
@media screen and (min-width: 1025px) {
a.btn_orange:active,
a.btn_orange:hover {
color: #fff;
}
}
a.btn_orange_o:link,
a.btn_orange_o:visited {
color: #ec7405;
}
@media screen and (min-width: 1025px) {
a.btn_orange_o:hover,
a.btn_orange_o:active {
color: #fff;
}
}
/*粉紅色 btn_pink*/
.btn_pink {
color: #fff;
background-color: #f3a79f;
}
.btn_pink_o {
color: #f3a79f;
background-color: #fff;
border: 1px solid #f3a79f;
}
@media screen and (min-width: 1025px) {
.btn_pink_o:hover {
color: #fff;
background-color: #f3a79f;
}
}
a.btn_pink:link,
a.btn_pink:visited {
color: #fff;
}
@media screen and (min-width: 1025px) {
a.btn_pink:active,
a.btn_pink:hover {
color: #fff;
}
}
a.btn_pink_o:link,
a.btn_pink_o:visited {
color: #f3a79f;
}
@media screen and (min-width: 1025px) {
a.btn_pink_o:hover,
a.btn_pink_o:active {
color: #fff;
}
}
.button:disabled {
cursor: not-allowed;
color: #505050;
background-color: #ccc;
}
@media screen and (min-width: 1025px) {
.button:disabled:hover::after {
background-color: rgba(0, 0, 0, 0);
}
}
.button_o:disabled {
cursor: not-allowed;
color: #505050;
border: 1px solid #bbb;
background-color: #ccc;
}
.button_l:disabled {
cursor: not-allowed;
color: #ccc;
}
.button_l:disabled i {
color: #ccc;
}
.btn_sky_l:disabled {
border-bottom: 1px solid #d3d3d3;
}

456
api/UseCSS/dropdown2.css Normal file
View File

@@ -0,0 +1,456 @@
/*本體區塊*/
.DropList {
position: relative;
display: inline-block;
line-height: 30px;
}
.DropList .DropList_i {
padding: 0 2px 0 5px;
}
.DropList button {
/*要有這個 手機才會顯示正常*/
line-height: 22px;
}
.DropList button[mod-arrow="left"] {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.DropList button[mod-arrow="right"] {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.DropList .DropList_i_loading {
padding: 0;
}
/*下拉選單樣式*/
.DropList .DropListSelect {
text-align: left;
min-width: 210px;
max-width: 320px;
/*max-height: 205px;*/
z-index: 5000;
position: absolute;
background-color: #fff;
border: 1px solid #d3d3d3;
border-radius: 5px;
overflow: hidden;
top: 0;
left: 0;
/*box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);*/
box-shadow: 0 6px 10px -5px rgba(0, 0, 0, 0.5);
}
/*搜尋優先模式註解*/
.DropList .DropListSearchMemo {
font-size: 12px;
white-space: nowrap;
margin: 5px;
}
/*搜尋列樣式*/
.DropList .DropListSearch {
text-align: center;
margin: 5px;
/*padding: 0 0 5px 0;*/
border: 1px solid #d3d3d3;
border-radius: 0 3px 3px 3px;
line-height: initial;
}
.DropList .DropListSearch table {
width: 100%;
border-collapse: collapse;
border-spacing: 0;
}
.DropList .DropListSearch table tr {
background-color: rgba(0, 0, 0, 0);
}
.DropList .DropListSearch table tr td {
height: auto;
background-color: rgba(0, 0, 0, 0);
border: 0;
padding: 0;
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0) inset,0 0 0 0 rgba(0, 0, 0, 0) inset;
}
.DropList .DropListSearch table tr td:first-child {
padding: 3px 0 3px 3px;
}
.DropList .DropListSearch table tr td:last-child {
padding: 0 3px 0;
width: 24px;
}
.DropList .DropListSearch table tr td button {
padding: 3px 2px;
outline: none;
width: 100%;
/*height: 100%;*/
font-size: 16px;
}
.DropList .DropListSearch table tr td .DropListSearchInput {
border: 0;
margin: 0;
color: #505050;
}
/*下拉清單外殼*/
.DropList .DropListTarget {
max-height: 180px;
overflow: auto;
}
/*擴充按鈕模組樣式*/
.DropList .DropListPlugin {
white-space: nowrap;
/*text-align: center;*/
/*background-color: #f1f1f1;*/
margin: 5px;
/*padding: 0 0 5px 0;*/
}
.DropList .DropListPlugin button {
/*border-radius: 0;*/
margin: 0 5px 0 0;
}
.DropList .DropListPlugin button:first-child {
/*border-radius: 3px 0 0 3px;*/
}
.DropList .DropListPlugin button:last-child {
/*border-radius: 0 3px 3px 0;*/
margin: 0;
}
/*當前筆數顯示區塊*/
.DropList .DropListNowCount {
font-size: 12px;
padding: 2px 8px 2px 8px;
color: #808080;
background-color: #f1f1f1;
white-space: nowrap;
}
.DropList .DropListNowCountSelect {
color: #000;
margin: 0 15px 0 0;
}
.DropList .DropListNowCountSearch {
color: #000;
margin: 0 15px 0 0;
}
.DropList .DropListNowCountAll {
color: #000;
}
/*群組清單樣式*/
.DropList .DropListGroupList {
display: none;
}
.DropList .DropListGroupListItem {
cursor: pointer;
padding: 2px 8px;
white-space: nowrap;
}
@media screen and (min-width: 1025px) {
.DropList .DropListGroupListItem:hover {
color: #b04d67;
}
}
/*群組樣式*/
.DropList .DropListOptgroup {
/*white-space: nowrap;*/
}
.DropList .DropListOptgroupTitle {
cursor: default;
/*padding: 0 4px;*/
padding: 5px;
color: #fff;
}
.DropList .DropListOptgroupTitle .DropListOptgroupTitleSpan {
background-color: #c86e86;
padding: 3px 15px 3px 10px;
border-radius: 5px 20px 20px 5px;
}
/*清單選項樣式*/
.DropList .DropListOption {
cursor: pointer;
padding: 2px 8px;
display: block;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
margin: 0;
}
@media screen and (min-width: 1025px) {
.DropList .DropListOption:hover {
color: #505050;
background-color: #f1f1f1;
}
}
.DropList .DropListOption input[type="radio"],
.DropList .DropListOption input[type="checkbox"] {
box-shadow: rgba(0, 0, 0, 0) 0 0 0 0 inset;
cursor: pointer;
}
.DropList .DropListOption .label_icon,
.DropList .DropListOption .label_icon {
margin-right: 5px;
}
.DropList .DropListOption input[type=checkbox] ~ .label_icon::after {
top: -9px;
}
.DropList .DropListOption input[type=checkbox]:checked ~ .label_icon::after {
top: -8px;
}
.DropList .DropListOption_Brick {
display: inline-block;
margin-right: 3.5px;
margin-left: 3.5px;
border-radius: 5px;
}
/*選項被選取時的顏色*/
.DropList .DropListOptionSelectBG {
color: #fff;
background-color: #337ab7;
}
@media screen and (min-width: 1025px) {
.DropList .DropListOptionSelectBG:hover {
color: #fff;
background-color: #337ab7;
}
}
/*按鈕關閉使用*/
.DropList .DropListDisabled {
cursor: not-allowed;
}
.DropList .DropListDisabled .DropListOption {
cursor: not-allowed;
}
.DropList .DropListOption input[type=radio]:disabled ~ .label_icon::after,
.DropList .DropListOption input[type=checkbox]:disabled ~ .label_icon::after {
top: 0;
}
.DropList .DropListOption input[type=radio]:disabled ~ .label_icon::before,
.DropList .DropListOption input[type=checkbox]:disabled ~ .label_icon::before,
.DropList .DropListOption input[type=radio]:disabled ~ .label_icon::before,
.DropList .DropListOption input[type=checkbox]:disabled ~ .label_icon::before {
font-family: 'FontAwesome';
content: '\f05e';
font-weight: 900;
font-size: 16px;
color: #f00;
top: -9px;
left: 2px;
position: absolute;
}
/*下拉選單樣式 手機專用*/
.DropList .DropListSelect_Phone {
top: 0;
left: 0;
position: fixed;
border-radius: 0;
max-width: initial;
width: 100%;
height: 100%;
border: 0;
max-height: initial;
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
z-index: 9000;
/*overflow: auto;*/
}
.DropList .DropListSelect_Phone .DropListOption {
padding: 8px 8px;
border-bottom: 1px dashed #d3d3d3;
}
/*.DropList .DropListSelect_Phone .DropListOption:last-child {
border: 0;
}*/
.DropList .DropListSelect_Phone .DropListOptgroupTitle {
/*padding: 0 4px;*/
padding: 0 8px;
background-color: #f1f1f1;
line-height: 40px;
border-bottom: 1px dashed #d3d3d3;
}
.DropList .DropListSelect_Phone .DropListOptgroup:first-child .DropListOptgroupTitle {
border-top: 1px dashed #d3d3d3;
}
.DropList .DropListSelect_Phone .DropListOptgroupTitle .DropListOptgroupTitleSpan {
background-color: #f1f1f1;
padding: 0;
color: #000;
}
.DropList .DropListSelect_Phone .DropListSearch {
padding: 5px;
border-radius: 3px;
}
.DropList .DropListSelect_Phone .DropListSearch button {
padding: 5px 0px;
}
.DropList .DropListSelect_Phone .DropListTarget {
/*max-height: initial;
overflow: initial;
border-radius: 0;*/
}
.DropList .DropListSelect_Phone .DropListGroupListItem {
padding: 8px 8px;
border-bottom: 1px dashed #d3d3d3;
}
.DropList .DropListSelect_Phone .DropListGroupListItem:first-child {
border-top: 1px dashed #d3d3d3;
}
@media screen and (min-width: 1025px) {
.DropList .DropListSelect_Phone .DropListGroupListItem:hover {
/*color: #ff6a00;*/
}
}
/*關閉選單按鈕 手機專用*/
.DropList .DropListClose {
cursor: pointer;
padding: 8px 0;
text-align: center;
color: #fff;
background-color: #808080;
margin: 0 0 5px 0;
}
@media screen and (min-width: 1025px) {
.DropList .DropListClose:hover {
background-color: #17578e;
}
}
/*下拉選單樣式 清單模式*/
.DropList .DropListSelect_List {
display: inline-block;
text-align: left;
/*min-width: 125px;
max-height: initial;*/
z-index: 1;
position: inherit;
background-color: #fff;
border: 1px solid #d3d3d3;
box-shadow: 0 0 0 rgba(0, 0, 0, 0);
border-radius: 0;
overflow: auto;
/*top: 0;
left: 0;*/
}
/*群組選取樣式*/
.DropList .DropListOptgroupTitleGroupSelect {
cursor: pointer;
display: block;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
background-color: #f1f1f1;
}
@media screen and (min-width: 1025px) {
.DropList .DropListOptgroupTitleGroupSelect:hover {
background-color: #dfdfdf;
}
}
/*選項被選取時的顏色*/
.DropList .DropListOptgroupTitleGroupSelectBG {
color: #fff;
background-color: #1b5b93;
}
@media screen and (min-width: 1025px) {
.DropList .DropListOptgroupTitleGroupSelectBG:hover {
color: #fff;
background-color: #1b5b93;
}
}
.DropList .DropListSelect_Phone .DropListOptgroupTitleGroupSelectBG {
background-color: #1b5b93;
}
/*控制滑動條樣式*/
/* 滑動條 寬度 (必要) */
.DropList .dropdown_list::-webkit-scrollbar {
/*width: 10px;*/
}
/* 滑動條 背景顏色 */
.DropList .dropdown_list::-webkit-scrollbar-track {
/*margin: 3px 0;*/
}
/* 滑動條 滑塊樣式 */
.DropList .dropdown_list::-webkit-scrollbar-thumb {
/*background-color: #ccc;
border-radius: 2px;*/
}
@media screen and (min-width: 1025px) {
.DropList .dropdown_list::-webkit-scrollbar-thumb:hover {
/*background-color: #aaa;*/
}
}
/* 滑動條 兩頭監聽按鈕樣式 */
.DropList .dropdown_list::-webkit-scrollbar-button {
/*width: 0px;
height: 0px;*/
}
/* 橫向滑動條跟縱向滑動條相交處顏色 */
.DropList .dropdown_list::-webkit-scrollbar-corner {
/*background-color: rgba(0, 0, 0, 0);*/
}

510
api/UseCSS/table2.css Normal file
View File

@@ -0,0 +1,510 @@
/*
可與舊版本並存
基本用法
<table class="table">
<tr>
<th>標題</th>
</tr>
<tr class="trHover">
<td class="tdHover">內容</td>
</tr>
</table>
使用擴充樣式 (外層增加 div 覆蓋)
<div class="table_shadow table_shadowNoLine">
<table class="table">
<tr>
<th>標題</th>
</tr>
<tr class="trHover">
<td>內容</td>
</tr>
</table>
</div>
※ Table擴充樣式 (外層div的class)
.table_shadow 陰影線風格(優點不會跑格式、不會缺線 / 缺點只能為方形表格、若不為方形會缺線)
◎延伸樣式:.table_shadowVerticalLine 僅顯示垂直框線
.table_shadowHorizontalLine 僅顯示水平框線
.table_shadowNoLine 去除框線
.table_zebra 斑馬線樣式
.table_shadowBlue 改變風格 藍色
.table_shadowRed 改變風格 紅色
.table_shadowYellow 改變風格 黃色
.table_shadowGreen 改變風格 綠色
.table_shadowMiku 改變風格 初音綠
.table_shadowSky 改變風格 天空藍
.table_shadowPeach 改變風格 桃紫色
.table_shadowIron 改變風格 鐵灰色
※ 水平對齊
.textL 靠左
.textC 置中
.textR 靠右
※ 垂直對齊
.vertT 靠上
.vertM 置中
.vertB 靠下
※ 其他設定項目
.font0 文字大小歸零
.table_child 子層樣式(table 的 class在 table 中要放置子層 table 使用)
.table_clear 清除樣式(僅保留外框線及寬100%)
*/
/*全域配置*/
table {
border-collapse: collapse;
border-spacing: 0;
}
table tr th,
table tr td {
padding: 0;
word-break: break-all;
}
/*表格宣告*/
.table {
width: 100%;
}
.table tr th,
.table tr td {
padding: 5px;
height: 30px;
border: 1px solid #d3d3d3;
font-weight: normal;
}
.table tr th {
background-color: #f5f5f5;
}
/*陰影線風格*/
.table_shadow {
/*overflow: hidden;*/
/*border-radius: 0 0 3px 3px;*/
box-shadow: 0 0 0 1px #d3d3d3;
}
.table_shadow tr th,
.table_shadow tr td {
border: 0;
box-shadow: 0 -1px 0 0 #d3d3d3 inset,-1px 0 0 0 #d3d3d3 inset;
}
.table_shadow tr th:last-child,
.table_shadow tr td:last-child {
box-shadow: 0 -1px 0 0 #d3d3d3 inset,0 0 0 0 rgba(0, 0, 0, 0) inset;
}
.table_shadow tr:last-child th,
.table_shadow tr:last-child td {
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0) inset,-1px 0 0 0 #d3d3d3 inset;
}
.table_shadow tr:last-child th:last-child,
.table_shadow tr:last-child td:last-child {
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0) inset,0 0 0 0 rgba(0, 0, 0, 0) inset;
}
.table_zebra tr th {
background-color: rgba(0, 0, 0, 0);
}
.table_zebra tr:first-child th {
background-color: #f5f5f5;
}
.table_zebra tr:nth-child(odd) th,
.table_zebra tr:nth-child(odd) td {
background-color: #fafafa;
}
/*陰影線風格(僅顯示垂直框線)*/
.table_shadowVerticalLine tr th,
.table_shadowVerticalLine tr td {
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0) inset,-1px 0 0 0 #d3d3d3 inset;
}
.table_shadowVerticalLine tr th:last-child,
.table_shadowVerticalLine tr td:last-child {
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0) inset,0 0 0 0 rgba(0, 0, 0, 0) inset;
}
/*陰影線風格(僅顯示水平框線)*/
.table_shadowHorizontalLine tr th,
.table_shadowHorizontalLine tr td {
box-shadow: 0 -1px 0 0 #d3d3d3 inset,0 0 0 0 rgba(0, 0, 0, 0) inset;
}
.table_shadowHorizontalLine tr:last-child th,
.table_shadowHorizontalLine tr:last-child td {
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0) inset,0 0 0 0 rgba(0, 0, 0, 0) inset;
}
/*陰影線風格(去除框線)*/
.table_shadowNoLine tr th,
.table_shadowNoLine tr td,
.table_shadowNoLine tr th:last-child,
.table_shadowNoLine tr td:last-child,
.table_shadowNoLine tr:last-child th,
.table_shadowNoLine tr:last-child td {
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0) inset,0 0 0 0 rgba(0, 0, 0, 0) inset;
}
/*陰影線風格(改變風格 藍色)*/
.table_shadowBlue {
border-top: 2px solid #2185cf;
border-radius: 0 0 5px 5px;
}
.table_shadowBlue tr th {
color: #2185cf;
}
/*陰影線風格(改變風格 初音綠)*/
.table_shadowMiku {
border-top: 2px solid #0098a1;
border-radius: 0 0 5px 5px;
}
.table_shadowMiku tr th {
color: #0098a1;
}
/*陰影線風格(改變風格 黃色)*/
.table_shadowYellow {
border-top: 2px solid #f6a800;
border-radius: 0 0 5px 5px;
}
.table_shadowYellow tr th {
color: #f6a800;
}
/*陰影線風格(改變風格 紅色)*/
.table_shadowRed {
border-top: 2px solid #e53534;
border-radius: 0 0 5px 5px;
}
.table_shadowRed tr th {
color: #e53534;
}
/*陰影線風格(改變風格 綠色)*/
.table_shadowGreen {
border-top: 2px solid #009149;
border-radius: 0 0 5px 5px;
}
.table_shadowGreen tr th {
color: #009149;
}
/*陰影線風格(改變風格 天空藍)*/
.table_shadowSky {
border-top: 2px solid #0094ff;
border-radius: 0 0 5px 5px;
}
.table_shadowSky tr th {
color: #0094ff;
}
/*陰影線風格(改變風格 桃紫色)*/
.table_shadowPeach {
border-top: 2px solid #a5027c;
border-radius: 0 0 5px 5px;
}
.table_shadowPeach tr th {
color: #a5027c;
}
/*陰影線風格(改變風格 鐵灰色)*/
.table_shadowIron {
border-top: 2px solid #3e3e3e;
border-radius: 0 0 5px 5px;
}
.table_shadowIron tr th {
color: #3e3e3e;
}
/*水平對齊指令*/
.table .textL {
text-align: left;
}
.table .textC {
text-align: center;
}
.table .textR {
text-align: right;
}
/*垂直對齊指令*/
.table .vertT {
vertical-align: top;
}
.table .vertM {
vertical-align: middle;
}
.table .vertB {
vertical-align: bottom;
}
/*註銷表格內文字大小*/
.table .font0 {
font-size: 0;
}
/*表格中的表格 子層樣式*/
.table .table_child {
width: 100%;
}
.table .table_child tr th,
.table .table_child tr td {
border: 1px solid #d3d3d3;
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0) inset,0 0 0 0 rgba(0, 0, 0, 0) inset;
}
/*清除樣式*/
.table .table_clear tr th {
text-align: center;
}
.table .table_clear tr th,
.table .table_clear tr td {
padding: 0;
height: initial;
background-color: rgba(0, 0, 0, 0);
color: #505050;
border: 0;
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0) inset,0 0 0 0 rgba(0, 0, 0, 0) inset;
}
/*在 table 裡面的 輸入欄位隱藏底線*/
.table input[type=text],
.table input[type=password] {
border-bottom: 1px solid rgba(0, 0, 0, 0);
transition: linear 0.2s;
}
.table textarea {
border: 0;
position: relative;
left: -1px;
}
/*在 table 裡面的 textarea 關注時 要顯示外框線 */
.table textarea {
border: 1px solid rgba(0, 0, 0, 0);
}
.table textarea.showBorder {
border: 1px solid #d3d3d3;
}
/*懸停樣式*/
@media screen and (min-width: 1025px) {
/*.table .trHover:hover th,*/
.table .trHover:hover td,
.table tr .tdHover:hover {
background-color: #fffce7;
}
.table tr .tdHover:active {
background-color: #fff;
}
.table input[type=text]:hover,
.table input[type=password]:hover {
border-bottom: 1px solid #d3d3d3;
}
.table textarea:hover {
border: 1px solid #d3d3d3;
}
}
.table input[type=text]:focus,
.table input[type=password]:focus {
border-bottom: 1px solid #d3d3d3;
}
.table textarea:focus {
border: 1px solid #c86e86;
}
.table tr .tdGray {
background-color: #f5f5f5;
}
/*線性表格*/
.table-line {
border-collapse: collapse;
border-spacing: 0;
width: 100%;
}
.table-line tr th,
.table-line tr td {
height: 1px;
border-bottom: 1px solid #d3d3d3;
}
.table-line tr th {
padding: 0 10px 0 0;
text-align: left;
color: #0072c4;
vertical-align: bottom;
}
.table-line tr td {
padding: 10px 10px 10px 0;
vertical-align: middle;
}
.table-line tr th:last-child,
.table-line tr td:last-child {
padding-right: 0;
}
.table-line tr:last-child td {
border-bottom: 0;
}
.table-line tr th .table2title {
color: #0072c4;
border-bottom: 2px solid #0072c4;
padding: 5px 0;
display: inline-block;
position: relative;
top: 1px;
}
/*水平對齊指令*/
.table-line .textL {
text-align: left;
}
.table-line .textC {
text-align: center;
}
.table-line .textR {
text-align: right;
}
/*垂直對齊指令*/
.table-line .vertT {
vertical-align: top;
}
.table-line .vertM {
vertical-align: middle;
}
.table-line .vertB {
vertical-align: bottom;
}
/*註銷表格內文字大小*/
.table-line .font0 {
font-size: 0;
}
/*內距調整 10px*/
.table-line .padding-10 {
padding: 10px;
}
/*指示連結手勢*/
.table-line .trPointer td {
cursor: pointer;
}
/*懸停樣式*/
@media screen and (min-width: 1025px) {
}
.table-line .trHover:hover td {
background-color: #fffce7;
}
/*點擊樣式*/
.table-line .trHover:active td {
background-color: rgba(0, 0, 0, 0);
}

238
api/UseCSS/timepick.css Normal file
View File

@@ -0,0 +1,238 @@
/*本體區塊*/
.TimePick {
position: relative;
display: inline-block;
line-height: 30px;
}
/* 將默認的 select 樣式清除,可以利用背景圖片賦予下拉箭頭的樣子 */
.TimePick select {
-moz-appearance: none;
-webkit-appearance: none;
}
/* 清除 ie 的默認選擇框樣式清除,隱藏下拉箭頭*/
.TimePick select::-ms-expand {
display: none;
}
/*時間選擇器樣式*/
.TimePick .TimePickSelect {
zoom: 1;
text-align: left;
width: 300px;
z-index: 4950;
position: absolute;
background-color: #fff;
border: 1px solid #d3d3d3;
/*box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);*/
box-shadow: 0 6px 10px -5px rgba(0, 0, 0, 0.5);
border-radius: 5px;
overflow: hidden;
top: 0;
left: 0;
}
.TimePick .TimePickHeader {
color: #fff;
text-align: center;
background-color: #c86e86;
padding: 0 2px 2px 2px;
}
.TimePick .TimePickTitle {
cursor: default;
padding: 5px;
position: relative;
}
.TimePick .TimePickTitle select {
cursor: pointer;
font-family: 'Noto Sans TC',sans-serif;
border: 0;
outline: none;
color: #fff;
font-size: 16px;
background-color: rgba(0, 0, 0, 0);
opacity: 1;
}
@media screen and (min-width: 1025px) {
.TimePick .TimePickTitle select:hover {
opacity: 0.8;
}
}
.TimePick .TimePickPrevArrow {
position: absolute;
top: 5px;
left: 5px;
color: #fff;
padding: 0 5px;
cursor: pointer;
opacity: 0.6;
}
.TimePick .TimePickNextArrow {
position: absolute;
top: 5px;
right: 5px;
color: #fff;
padding: 0 5px;
cursor: pointer;
opacity: 0.6;
}
@media screen and (min-width: 1025px) {
.TimePick .TimePickPrevArrow:hover,
.TimePick .TimePickNextArrow:hover {
opacity: 1;
}
}
.TimePick .TimePickPrevArrow:active,
.TimePick .TimePickNextArrow:active {
opacity: 0.5;
}
.TimePick .TimePickSelect .TimePickTable {
font-weight: normal;
font-size: 12px;
box-shadow: none;
width: 100%;
border-collapse: collapse;
border-spacing: 0;
}
.TimePick .TimePickSelect .TimePickTable tr:first-child {
background-color: rgba(0, 0, 0, 0);
}
.TimePick .TimePickSelect .TimePickTable tr td {
background-color: rgba(0, 0, 0, 0);
border: 0;
padding: 0;
text-align: center;
word-break: break-all;
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0) inset,0 0 0 0 rgba(0, 0, 0, 0) inset;
}
.TimePick .TimePickSelect .TimePickTable tr td .TimePickTableTitle {
color: #fff;
cursor: default;
display: inline-block;
opacity: 0.8;
line-height: 20px;
}
.TimePick .TimePickSelect .TimePickTable tr td .TimePickTableSpan {
display: inline-block;
cursor: pointer;
width: 36px;
line-height: 24px;
margin: 0 0 5px 0;
border-radius: 3px;
}
@media screen and (min-width: 1025px) {
.TimePick .TimePickSelect .TimePickTable tr td .TimePickTableSpan:hover {
background-color: #f1f1f1;
}
}
.TimePick .TimePickSelect .TimePickTable tr td .TimePickTableFalse {
color: #bbb;
}
.TimePick .TimePickSelect .TimePickTable tr td .TimePickTableSelect {
cursor: default;
color: #fff;
background-color: #c86e86;
}
@media screen and (min-width: 1025px) {
.TimePick .TimePickSelect .TimePickTable tr td .TimePickTableSelect:hover {
cursor: default;
color: #fff;
background-color: #c86e86;
}
}
.TimePick .TimePickSelect .TimePickTable tr td .TimePickTableToday {
box-shadow: 0 0 0 1px #d3d3d3 inset;
}
.TimePick .TimePickSelect .TimePickTable tr td .TimePickTableDisabled {
cursor: default;
color: #808080;
background-color: #ccc;
}
.TimePick .TimePickSelect .TimePickTable tr td .TimePickTableDisabled:hover {
cursor: default;
color: #808080;
background-color: #ccc;
}
.TimePick .TimePickDateBox {
font-size: 0;
text-align: center;
padding: 5px 2px 0 2px;
/*background-color: #f00;*/
}
.TimePick .TimePickTimeBox {
text-align: center;
font-size: 14px;
padding: 5px 0;
border-top: 1px dashed #d3d3d3;
}
.TimePick .TimePickTimeBox select {
cursor: pointer;
font-family: 'Noto Sans TC',sans-serif;
border: 0;
padding: 2px 4px;
outline: none;
background-color: rgba(0, 0, 0, 0);
}
@media screen and (min-width: 1025px) {
.TimePick .TimePickTimeBox select:hover {
color: #ff6a00;
}
}
.TimePick option {
font-family: 'Noto Sans TC',sans-serif;
color: #000;
}
.TimePick .TimePickWork {
text-align: right;
padding: 5px;
border-top: 1px dashed #d3d3d3;
}
.TimePick .TimePickWork .button {
color: #505050;
background-color: #f5f5f5;
}
.TimePick .TimePickWork .button:last-child {
color: #fff;
background-color: #c86e86;
}
/*手機板專用*/
.TimePick .TimePickSelect_Phone {
zoom: 1;
width: 300px;
position: fixed;
border-radius: 5px;
top: 10px;
left: 50%;
margin: 0 0 0 -150px;
z-index: 9000;
line-height: initial;
}

817
api/UseJS/alert2.js Normal file
View File

@@ -0,0 +1,817 @@
/*
Ver 2.0.11
※可與舊版本並存
※解析度 1920 以上時,由 css 控制放大 1.25 倍
函數調用需再 jQuery 1.9.1 ~ 3.3.1 環境使用
-----------------------------------------------------------------------------------------------------------------------------
※調整 AlertBoxSetting 變數可做全域設定
以下為可調用函數
呼叫視窗 > alertBox({ 選填項目 })
關閉視窗 > alertClose('執行狀態', 'Code碼') ※執行狀態分別為('ok'、'cancel')
若無填寫則不會執行結束後函數,但會關閉視窗
若無設定 Code碼 則預設關閉最上層的視窗
a. alert模式時 設置 'ok'、'cancel' 時,將執行 OnOK、OnCancel、OnClose、OnEnd 函數
b. confirm模式時 設置 'ok' 時,將執行 OnClose、OnOK、OnEnd 函數
設置 'cancel' 時,將執行 OnCancel、OnClose、OnEnd 函數
c. prompt模式時 設置 'ok' 時,將執行 OnClose、OnOK、OnEnd 函數
設置 'cancel' 時,將執行 OnCancel、OnClose、OnEnd 函數
d. progress模式時設置 'ok'、'cancel' 時,將執行 OnOK、OnCancel、OnClose、OnEnd 函數
e. loading模式時 設置 'ok'、'cancel' 時,將執行 OnOK、OnCancel、OnClose、OnEnd 函數
改變進度條資訊 > alertProgress(百分比, 'Html內容', 自動關閉設定) ※此為 progress 模式專用函數
百分比請輸入純數字設定參數Html內容為非必填項目可自行斟酌
若百分比大於100時將延遲0.5秒(預設)後自動關閉視窗,並執行 OnEnd 函數
自動關閉設定如果設定為 true 為自動關閉,設定為 false 為不關閉,預設為 true
改變loading內容 > alertLoadingMsg('Html內容', 'Code碼') ※此為 loading 模式專用函數Code碼為非必填項目可自行斟酌
關閉loading視窗 > alertLoadingEnd('Html內容', 延遲毫秒, 回調函數, 'Code碼') ※此為 loading 模式專用函數
所有參數為非必填項目,可自行斟酌
延遲毫秒請輸入純數字設置,單位為毫秒數 1秒/1000毫秒
回調函數設定後即自動套用至 OnEnd 函數並調用
-----------------------------------------------------------------------------------------------------------------------------
呼叫視窗 選填項目:使用模式 Mode (預設:'alert') ※分別有下列模式('alert'('A')、'confirm'('C')、'prompt'('PM')、'progress'('PR')、'loading'('L')),括號內大寫字母為縮寫參數
Html內容 Html (預設:'') ※可利用 $(id) 帶入
抬頭文字 Title (預設:'') ※若為空白或 null 則不會顯示,未設定時依照模式帶入預設值
操控列內容 Ctrl (預設:'') ※若為空白或 null 則不會顯示,未設定時依照模式帶入預設值
擴充指令 Setting (預設:{ } ) ※依照各個 Mode 使用模式而有所不同,詳細設定請參考下面各個模式的解說
外層容器Style OutsideStyle (預設:'')
外層容器Class OutsideClass (預設:'')
內層標題Style TitleStyle (預設:'')
內層標題Class TitleClass (預設:'')
內層容器Style InsideStyle (預設:'')
內層容器Class InsideClass (預設:'')
內層控制列Style CtrlStyle (預設:'')
內層控制列Class CtrlClass (預設:'')
點擊其他處關閉視窗 TouchClose (預設:依附全域設定) ※可蓋過全域設定獨立運作
顯示前 執行函數 OnStart (預設null設定時請使用 function (Code) { } ) ※執行順序 1物件建立前執行
顯示時 執行函數 OnRun (預設null設定時請使用 function (Code) { } ) ※執行順序 2物件建立後且動畫前執行
顯示後 執行函數 OnReady (預設null設定時請使用 function (Code) { } ) ※執行順序 3物件建立後且動畫後執行
關閉前 執行函數 OnClose (預設null設定時請使用 function (Type, Value) { return true; } ) ※執行順序 4物件移除前且動畫前執行若回傳 false 則不接續執行下面動作
確認後 執行函數 OnOK (預設null設定時請使用 function (Value) { } ) ※執行順序 5物件移除前且動畫後執行
取消後 執行函數 OnCancel (預設null設定時請使用 function () { } ) ※同上
關閉後 執行函數 OnEnd (預設null設定時請使用 function () { } ) ※同上
-----------------------------------------------------------------------------------------------------------------------------
prompt模式 擴充指令:使用模式 Mode (預設:'text') ※分別有下列模式('text'、'password'、'textarea')
預設值 Value (預設:'')
欄位註解 Placeholder (預設:'輸入...')
欄位行數 Rows (預設3) ※輸入純數字設定參數,使用 textarea 模式時才會生效
預設框選 Select (預設false)
是否必填 Required (預設true) ※若資料為空白則自動提示使用者該項目必填
progress模式 擴充指令:延遲關閉時間 Delay (預設500) ※單位為毫秒數
loading模式 擴充指令:延遲關閉時間 Delay (預設500) ※單位為毫秒數
-----------------------------------------------------------------------------------------------------------------------------
*/
//設定按鈕樣式 Class
var AlertBoxSetting = {
OkText: '確定', //確認 按鈕文字
CancelText: '取消', //取消 按鈕文字
OkClass: 'button btn_peach', //確認 按鈕樣式
CancelClass: 'button btn_white', //取消 按鈕樣式
CoverSpeed: 200, //遮罩速度
CoverTransition: 'linear', //遮罩過場動畫樣式
StartSpeed: 300, //開啟速度
StartTransition: 'easeOutBack', //開啟過場動畫樣式
EndSpeed: 200, //關閉速度
EndTransition: 'linear', //關閉過場動畫樣式
ScrollType: 'mousewheel', //滾動禁用模式:'overflow'、'mousewheel'、'keydown'、'none' ※建議使用 mousewheel 最佳
TouchClose: false, //是否開啟點擊其他處關閉視窗 (全域設定)
ButtonChange: false, //確定按鈕與取消按鈕位置是否要交換
EscClose: true, //使用ESC視窗關閉視窗開關
CloseIcon: false, //是否要使用於 Title 區塊的關閉 icon 按鈕 (progress、loading模式無法使用)
Compatible: true, //是否開啟舊版本相容函數
FilterTarget: '#MasterPage_div', //設定濾鏡使用 DOM 元件
FilterBlur: false, //是否開啟失焦濾鏡 (IE不支援、FireFox相容性較差背景有跑版面的可能)
FilterBlurValue: 2, //設定失焦濾鏡參數 (輸入純數字設置)
};
//宣告專用變數儲存物件
var AlertBoxTempData = {};
var AlertBoxMouseWheelCheck = true; //判斷 body 的滾動條是否要禁用
var AlertBoxBodyScrollValue = 0; //判斷 body 目前的 scrollTop 座標
var AlertBoxKeyupEscCloseTarget; //ESC所使用的當前開啟的視窗辨別變數
var AlertBoxUidCode = 0; //唯一值變數
//開啟視窗
alertBox = function (Setting) {
//唯一值變數
AlertBoxUidCode++;
//定義預設值
Setting.Mode = Setting.Mode ? Setting.Mode : 'alert'; //使用模式
Setting.Html = Setting.Html ? Setting.Html : ''; //Html內容
Setting.OutsideStyle = Setting.OutsideStyle ? Setting.OutsideStyle : ''; //外層容器Style
Setting.OutsideClass = Setting.OutsideClass ? Setting.OutsideClass : ''; //外層容器Class
Setting.TitleStyle = Setting.TitleStyle ? Setting.TitleStyle : ''; //內層標題Style
Setting.TitleClass = Setting.TitleClass ? Setting.TitleClass : ''; //內層標題Class
Setting.InsideStyle = Setting.InsideStyle ? Setting.InsideStyle : ''; //內層容器Style
Setting.InsideClass = Setting.InsideClass ? Setting.InsideClass : ''; //內層容器Class
Setting.CtrlStyle = Setting.CtrlStyle ? Setting.CtrlStyle : ''; //內層控制列Style
Setting.CtrlClass = Setting.CtrlClass ? Setting.CtrlClass : ''; //內層控制列Class
Setting.OnStart = Setting.OnStart ? Setting.OnStart : null; //顯示前 執行函數
Setting.OnRun = Setting.OnRun ? Setting.OnRun : null; //顯示時 執行函數
Setting.OnReady = Setting.OnReady ? Setting.OnReady : null; //顯示後 執行函數
Setting.OnOK = Setting.OnOK ? Setting.OnOK : null; //確認後 執行函數
Setting.OnCancel = Setting.OnCancel ? Setting.OnCancel : null; //取消後 執行函數
Setting.OnClose = Setting.OnClose ? Setting.OnClose : null; //關閉前 執行函數
Setting.OnEnd = Setting.OnEnd ? Setting.OnEnd : null; //關閉後 執行函數
Setting.Code = Setting.Mode + '_' + AlertBoxUidCode; //辨識名稱 (系統使用)
Setting.ID = null; //使用 dom 物件內容時使用變數 (系統使用)
Setting.Setting = Setting.Setting ? Setting.Setting : {}; //擴充指令
Setting.TouchClose = Setting.TouchClose === undefined ? AlertBoxSetting.TouchClose : Setting.TouchClose; //點擊其他處關閉視窗
//對應 Setting.Mode 縮寫參數
if (Setting.Mode === 'A') {
Setting.Mode = 'alert';
} else if (Setting.Mode === 'C') {
Setting.Mode = 'confirm';
} else if (Setting.Mode === 'PM') {
Setting.Mode = 'prompt';
} else if (Setting.Mode === 'PR') {
Setting.Mode = 'progress';
} else if (Setting.Mode === 'L') {
Setting.Mode = 'loading';
}
//若 Setting.Ctrl 未設定 則依照模式賦予設定值
if (Setting.Ctrl === undefined) {
var tempOKBtn = '<button onclick="alertClose(\'ok\',\'' + Setting.Code + '\')" type="button" class="' + AlertBoxSetting.OkClass + '"><i class="fa fa-check"></i>&nbsp;' + AlertBoxSetting.OkText + '</button>';
var tempCancelBtn = '<button onclick="alertClose(\'cancel\',\'' + Setting.Code + '\')" type="button" class="' + AlertBoxSetting.CancelClass + '"><i class="fa fa-times"></i>&nbsp;' + AlertBoxSetting.CancelText + '</button>';
//判斷是否需要顛倒按鈕位置
if (AlertBoxSetting.ButtonChange == true) {
if (Setting.Mode == 'alert') {
Setting.Ctrl = tempOKBtn;
} else if (Setting.Mode == 'confirm') {
Setting.Ctrl = tempOKBtn + '&nbsp;' + tempCancelBtn;
} else if (Setting.Mode == 'prompt') {
Setting.Ctrl = tempOKBtn + '&nbsp;' + tempCancelBtn;
} else if (Setting.Mode == 'progress') {
Setting.Ctrl = '';
}
} else {
if (Setting.Mode == 'alert') {
Setting.Ctrl = tempOKBtn;
} else if (Setting.Mode == 'confirm') {
Setting.Ctrl = tempCancelBtn + '&nbsp;' + tempOKBtn;
} else if (Setting.Mode == 'prompt') {
Setting.Ctrl = tempCancelBtn + '&nbsp;' + tempOKBtn;
} else if (Setting.Mode == 'progress') {
Setting.Ctrl = '';
}
}
}
//判斷是否使用關閉 icon 按鈕 (progress、loading模式、Title不顯示時無法使用)
var tempCloseIcon = '';
if (AlertBoxSetting.CloseIcon == true && Setting.Title != '' && Setting.Title != null) {
tempCloseIcon = '<i onclick="alertClose(\'cancel\',\'' + Setting.Code + '\')" class="fa fa-times AlertBoxDivCloseIcon"></i>';
}
//若 Setting.Title 未設定 則依照模式賦予設定值
if (Setting.Title === undefined) {
if (Setting.Mode == 'alert') {
Setting.Title = '<i class="fa fa-commenting-o"></i>&nbsp;訊息提示' + tempCloseIcon;
} else if (Setting.Mode == 'confirm') {
Setting.Title = '<i class="fa fa-check-square-o"></i>&nbsp;確認動作' + tempCloseIcon;
} else if (Setting.Mode == 'prompt') {
Setting.Title = '<i class="fa fa-pencil-square-o"></i>&nbsp;資料輸入' + tempCloseIcon;
} else if (Setting.Mode == 'progress') {
Setting.Title = '<i class="fa fa-align-left"></i>&nbsp;執行進度';
} else if (Setting.Mode == 'loading') {
Setting.Title = '<i class="fa fa-pie-chart"></i>&nbsp;當前狀態';
}
} else {
if (tempCloseIcon != '') {
Setting.Title = Setting.Title + tempCloseIcon;
}
}
// Setting.Setting 依照模式賦予設定值
if (Setting.Mode == 'prompt') {
Setting.Setting.Mode = Setting.Setting.Mode ? Setting.Setting.Mode : 'text';
Setting.Setting.Value = Setting.Setting.Value ? Setting.Setting.Value : '';
Setting.Setting.Placeholder = Setting.Setting.Placeholder ? Setting.Setting.Placeholder : '輸入...';
Setting.Setting.Rows = Setting.Setting.Rows ? Setting.Setting.Rows : 3;
Setting.Setting.Select = Setting.Setting.Select ? Setting.Setting.Select : 'text';
Setting.Setting.Required = Setting.Setting.Required === undefined ? true : Setting.Setting.Required;
} else if (Setting.Mode == 'progress' || Setting.Mode == 'loading') {
Setting.Setting.Delay = Setting.Setting.Delay ? Setting.Setting.Delay : 500;
}
//判斷 Setting.Html 是否為 object 物件 如果是就進行轉換
if (typeof (Setting.Html) == 'object') {
//套用變數
Setting.ID = '#' + $(Setting.Html).attr('id');
Setting.Html = $(Setting.Html).html();
//移除前端 dom 物件內的資料
$(Setting.ID).empty();
}
//放置於儲存物件變數內
AlertBoxTempData[Setting.Code] = Setting;
//執行 OnStart 顯示前 執行函數
if (typeof (Setting.OnStart) == 'function') {
Setting.OnStart(Setting.Code);
}
//啟用滾動禁用
alertBoxDisabledStart();
//填入遮罩
$('body').append('<div class="AlertBoxDiv" dom-code="' + Setting.Code + '"></div>');
//宣告容器變數
var tempBox = $(".AlertBoxDiv[dom-code='" + Setting.Code + "']");
//放入容器
tempBox.append('<table>' +
'<tr>' +
'<td>' +
'<div class="AlertBoxDivContent ' + Setting.OutsideClass + '" style="' + Setting.OutsideStyle + '"></div>' +
'</td>' +
'</tr>' +
'</table>');
//如果有 Setting.Title 就放入標題列
if (Setting.Title != '' && Setting.Title != null) {
tempBox.find('.AlertBoxDivContent').append('<div class="AlertBoxDivTitle ' + Setting.TitleClass + '" style="' + Setting.TitleStyle + '">' + Setting.Title + '</div>');
}
//放入內容區塊
tempBox.find('.AlertBoxDivContent').append('<div class="AlertBoxDivHtml ' + Setting.InsideClass + '" style="' + Setting.InsideStyle + '">' + Setting.Html + '</div>');
//如果有 Setting.Ctrl 就放入控制列
if (Setting.Ctrl != '' && Setting.Ctrl != null) {
tempBox.find('.AlertBoxDivContent').append('<div class="AlertBoxDivCtrl ' + Setting.CtrlClass + '" style="' + Setting.CtrlStyle + '">' + Setting.Ctrl + '</div>');
}
//判斷若為 prompt 模式時 需要加入輸入視窗
if (Setting.Mode == 'prompt') {
//依照擴充設定帶入元件
if (Setting.Setting.Mode == 'text' || Setting.Setting.Mode == 'password') {
tempBox.find('.AlertBoxDivHtml').append('<div style="margin-top: 5px">' +
'<input type="' + Setting.Setting.Mode + '" class="AlertBoxDivPromptDOM" placeholder="' + Setting.Setting.Placeholder + '" value="' + Setting.Setting.Value + '" />' +
'<div class="inputLine"></div>' +
'</div>');
//綁定鍵盤判斷
$('.AlertBoxDivPromptDOM').keyup(function (event) {
if (event.which == 13) {
alertClose('ok');
}
});
} else if (Setting.Setting.Mode == 'textarea') {
tempBox.find('.AlertBoxDivHtml').append('<div style="font-size: 0; margin-top: 5px">' +
'<textarea rows="' + Setting.Setting.Rows + '" class="AlertBoxDivPromptDOM" placeholder="' + Setting.Setting.Placeholder + '">' + Setting.Setting.Value + '</textarea>' +
'</div>');
}
}
//判斷若為 progress 模式時 需要加入進度條
if (Setting.Mode == 'progress') {
//重新套用 內容區塊 內的資料結構
tempBox.find('.AlertBoxDivHtml').empty();
tempBox.find('.AlertBoxDivHtml').html('<div class="AlertBoxDivHtmlText">' + Setting.Html + '</div>');
//插入進度條
tempBox.find('.AlertBoxDivHtml').append('<div class="ProgressBar">' +
'<div class="ProgressBar2" style="width: 0%"></div>' +
'<div class="ProgressBarWord">' +
'0%' +
'</div>' +
'</div>');
}
//判斷若為 loading 模式時 需要將欄位置中且最小高度重置
if (Setting.Mode == 'loading') {
tempBox.find('.AlertBoxDivHtml').css('text-align', 'center');
tempBox.find('.AlertBoxDivHtml').css('min-height', 'initial');
}
//畫面失焦防止連點
$(document.activeElement).blur();
//預設指定聚焦
if (Setting.Mode == 'prompt') {
tempBox.find('.AlertBoxDivPromptDOM:first').focus();
//判斷是否需要預設框選
if (Setting.Setting.Select == true) {
tempBox.find('.AlertBoxDivPromptDOM:first').select();
}
} else {
tempBox.find('.AlertBoxDivCtrl button:last').focus();
}
//顯示視窗
tempBox.animate({ opacity: 1 }, AlertBoxSetting.CoverSpeed, AlertBoxSetting.CoverTransition);
tempBox.find('.AlertBoxDivContent').animate({ 'margin-top': '0px', 'margin-bottom': '0px' }, AlertBoxSetting.StartSpeed, AlertBoxSetting.StartTransition);
//執行 OnRun 顯示時 執行函數
if (typeof (Setting.OnRun) == 'function') {
Setting.OnRun(Setting.Code);
}
//執行 OnReady 顯示後 執行函數 (依照動畫時間延遲執行)
if (typeof (Setting.OnReady) == 'function') {
$('body').delay(AlertBoxSetting.StartSpeed).show(1, function () {
Setting.OnReady(Setting.Code);
});
}
//綁定觸控、點擊操作事件
if (Setting.TouchClose == true) {
if (navigator.userAgent.toLowerCase().match(/(android|iphone|ipad|ipod);?/i)) {
//手機、平板用觸控
tempBox.on('touchstart', '.AlertBoxDivContent', function (event) {
//關閉觸發click
event.stopPropagation();
});
tempBox.on('touchstart', function (event) {
//執行關閉
alertClose('cancel', Setting.Code, 'click');
});
} else {
//電腦用點擊
tempBox.on('click', '.AlertBoxDivContent', function (event) {
//關閉觸發click
event.stopPropagation();
});
tempBox.on('click', function (event) {
//執行關閉
alertClose('cancel', Setting.Code, 'click');
});
}
}
//console.dir(Setting)
};
//關閉視窗
alertClose = function (Type, Code, Operating) {
//如果沒有 Code 碼就尋找最後一個容器的 Code 碼
Code = Code ? Code : $(".AlertBoxDiv:last").attr('dom-code');
//宣告容器變數
var tempBox = $(".AlertBoxDiv[dom-code='" + Code + "']");
//判斷變數是否還存在
if (!AlertBoxTempData[Code]) {
return;
}
//判斷是否需要無效化 (progress、loading模式使用)
if ((AlertBoxTempData[Code].Mode == 'progress' || AlertBoxTempData[Code].Mode == 'loading') &&
(Operating == 'esc' || Operating == 'click')) {
return;
}
//判斷若為 prompt 模式時 取得輸入的值
var tempValue = '';
if (AlertBoxTempData[Code].Mode == 'prompt') {
tempValue = $(".AlertBoxDiv[dom-code='" + Code + "']").find('.AlertBoxDivPromptDOM').val();
//判斷是否必填
if (AlertBoxTempData[Code].Setting.Required == true && tempValue == '' && Type == 'ok') {
alertBox({
Html: '<span style="color:#f00">請勿輸入空白!</span>',
OnEnd: function () {
tempBox.find('.AlertBoxDivPromptDOM:first').focus();
},
});
return;
}
}
//依照不同模式執行函數
if (AlertBoxTempData[Code].Mode == 'alert' || AlertBoxTempData[Code].Mode == 'progress' || AlertBoxTempData[Code].Mode == 'loading') {
// alert 及 progress 及 loading
if (typeof (AlertBoxTempData[Code].OnClose) == 'function' && Type) {
var tempOnClose = AlertBoxTempData[Code].OnClose(Type, tempValue);
if (tempOnClose == false) {
return;
}
}
} else if (AlertBoxTempData[Code].Mode == 'confirm' || AlertBoxTempData[Code].Mode == 'prompt') {
// confirm 及 prompt
if (typeof (AlertBoxTempData[Code].OnClose) == 'function' && (Type == 'ok' || Type == 'cancel')) {
var tempOnClose = AlertBoxTempData[Code].OnClose(Type, tempValue);
if (tempOnClose == false) {
return;
}
}
}
//關閉視窗
tempBox.animate({ opacity: 0 }, AlertBoxSetting.CoverSpeed, AlertBoxSetting.CoverTransition);
tempBox.find('.AlertBoxDivContent').animate({ 'margin-top': '20px', 'margin-bottom': '-20px' }, AlertBoxSetting.EndSpeed, AlertBoxSetting.EndTransition, function () {
//依照不同模式執行函數
if (AlertBoxTempData[Code].Mode == 'alert') {
// alert
if (typeof (AlertBoxTempData[Code].OnOK) == 'function' && Type) {
AlertBoxTempData[Code].OnOK(tempValue);
}
if (typeof (AlertBoxTempData[Code].OnCancel) == 'function' && Type) {
AlertBoxTempData[Code].OnCancel();
}
if (typeof (AlertBoxTempData[Code].OnEnd) == 'function' && Type) {
AlertBoxTempData[Code].OnEnd();
}
} else if (AlertBoxTempData[Code].Mode == 'confirm' || AlertBoxTempData[Code].Mode == 'prompt') {
// confirm 及 prompt
if (typeof (AlertBoxTempData[Code].OnOK) == 'function' && Type == 'ok') {
AlertBoxTempData[Code].OnOK(tempValue);
}
if (typeof (AlertBoxTempData[Code].OnCancel) == 'function' && Type == 'cancel') {
AlertBoxTempData[Code].OnCancel();
}
if (typeof (AlertBoxTempData[Code].OnEnd) == 'function' && (Type == 'ok' || Type == 'cancel')) {
AlertBoxTempData[Code].OnEnd();
}
} else if (AlertBoxTempData[Code].Mode == 'progress' || AlertBoxTempData[Code].Mode == 'loading') {
// progress 及 loading
if (typeof (AlertBoxTempData[Code].OnOK) == 'function' && Type) {
AlertBoxTempData[Code].OnOK(tempValue);
}
if (typeof (AlertBoxTempData[Code].OnCancel) == 'function' && Type) {
AlertBoxTempData[Code].OnCancel();
}
if (typeof (AlertBoxTempData[Code].OnEnd) == 'function' && Type) {
AlertBoxTempData[Code].OnEnd();
}
}
//判斷是物件還是字串模式
if (AlertBoxTempData[Code].ID != null) {
//將資料放回前端dom物件上
$(AlertBoxTempData[Code].ID).append(AlertBoxTempData[Code].Html);
}
//關閉滾動禁用
alertBoxDisabledEnd();
//移除視窗物件
tempBox.remove();
//移除變數
delete AlertBoxTempData[Code];
});
};
//改變進度條資訊 (progress模式專用)
alertProgress = function (Percent, Html, AutoClose) {
//轉為數字
Percent = parseInt(Percent);
//尋找最後一個容器的 Code 碼
Code = $(".AlertBoxDiv:last").attr('dom-code');
//宣告容器變數
var tempBox = $(".AlertBoxDiv[dom-code='" + Code + "']");
//判斷變數是否還存在
if (!AlertBoxTempData[Code]) {
return;
}
//改變Html內容
if (Html) {
tempBox.find('.AlertBoxDivHtml .AlertBoxDivHtmlText').html(Html);
}
//賦予預設開啟使用自動關閉
if (AutoClose == undefined) {
AutoClose = true;
}
//判斷百分比是否大於100
if (Percent >= 100 && AutoClose == true) {
//改變進度為100
tempBox.find('.AlertBoxDivHtml .ProgressBar2').css('width', '100%');
tempBox.find('.AlertBoxDivHtml .ProgressBarWord').html('100%');
//延遲後關閉視窗
$('body').delay(AlertBoxTempData[Code].Setting.Delay).show(1, function () {
alertClose('over', Code);
});
} else {
//改變進度
tempBox.find('.AlertBoxDivHtml .ProgressBar2').css('width', Percent + '%');
tempBox.find('.AlertBoxDivHtml .ProgressBarWord').html(Percent + '%');
}
};
//改變內容資訊 (loading模式專用)
alertLoadingMsg = function (Html, Code) {
//如果沒有 Code 碼就尋找最後一個容器的 Code 碼
Code = Code ? Code : $(".AlertBoxDiv:last").attr('dom-code');
//宣告容器變數
var tempBox = $(".AlertBoxDiv[dom-code='" + Code + "']");
//判斷變數是否還存在
if (!AlertBoxTempData[Code]) {
return;
}
//改變內容
tempBox.find('.AlertBoxDivHtml').html(Html);
};
//關閉loading視窗 (loading模式專用)
alertLoadingEnd = function (Html, Speed, CallBack, Code) {
//如果沒有 Code 碼就尋找最後一個容器的 Code 碼
Code = Code ? Code : $(".AlertBoxDiv:last").attr('dom-code');
//宣告容器變數
var tempBox = $(".AlertBoxDiv[dom-code='" + Code + "']");
//判斷變數是否還存在
if (!AlertBoxTempData[Code]) {
return;
}
//改變內容
if (Html != '' && Html != null && Html != undefined) {
tempBox.find('.AlertBoxDivHtml').html(Html);
}
//套用延遲時間
var tempSpeed = Speed ? Speed : AlertBoxTempData[Code].Setting.Delay;
//套用 callback 函數
if (typeof (CallBack) == 'function') {
AlertBoxTempData[Code].OnEnd = CallBack;
}
//延遲後關閉視窗
$('body').delay(tempSpeed).show(1, function () {
alertClose('over', Code);
});
};
//滾動禁用開始
alertBoxDisabledStart = function () {
if (AlertBoxSetting.ScrollType == 'overflow') {
//遮罩 body 內容方式
$('body').css('overflow', 'hidden');
} else if (AlertBoxSetting.ScrollType == 'mousewheel') {
//禁用滾動方式 (行動裝置不執行)
//if (!navigator.userAgent.toLowerCase().match(/(android|iphone|ipad|ipod);?/i)) {
//相加 html 與 body ,因應瀏覽器定義 scrollTop 的差異
AlertBoxBodyScrollValue = $('html').scrollTop() + $('body').scrollTop();
AlertBoxMouseWheelCheck = false;
//}
}
//判斷是否使用失焦遮罩 開啟
if (AlertBoxSetting.FilterBlur == true) {
$(AlertBoxSetting.FilterTarget).css('filter', 'blur(' + AlertBoxSetting.FilterBlurValue + 'px)');
}
};
//滾動禁用結束
alertBoxDisabledEnd = function () {
//場上所有視窗剩下最後一個時才開放
var TempNumber = 0;
$('.AlertBoxDiv').each(function (index, element) {
TempNumber++;
});
if (TempNumber <= 1) {
if (AlertBoxSetting.ScrollType == 'overflow') {
//恢復 body 內容
$('body').css('overflow', 'visible');
} else if (AlertBoxSetting.ScrollType == 'mousewheel') {
//開啟滾動使用 (行動裝置不執行)
//if (!navigator.userAgent.toLowerCase().match(/(android|iphone|ipad|ipod);?/i)) {
AlertBoxMouseWheelCheck = true;
//}
}
//判斷是否使用失焦遮罩 關閉
if (AlertBoxSetting.FilterBlur == true) {
$(AlertBoxSetting.FilterTarget).css('filter', 'initial');
}
}
};
//禁用滾動方式 專用監控
$(window).scroll(function () {
if (AlertBoxMouseWheelCheck == false) {
$('html,body').scrollTop(AlertBoxBodyScrollValue);
}
});
//判斷使否使用 ESC 關閉
$(document).on('keyup', 'body', function (event) {
//判斷在視窗開啟的情況下才可以關閉
if (event.keyCode == 27 && AlertBoxSetting.EscClose == true) {
if ($('.AlertBoxDiv').length > 0) {
alertClose('cancel', null, 'esc');
}
}
});
////點擊空白處關閉視窗判斷
//$(document).on('click', '.AlertBoxDivContent', function (event) {
// if (AlertBoxSetting.TouchClose == true) {
// //關閉觸發click
// event.stopPropagation();
// }
//});
//$(document).on('click', '.AlertBoxDiv', function (event) {
// if (AlertBoxSetting.TouchClose == true) {
// //執行關閉
// alertClose('cancel', null, 'click');
// }
//});
//$(document).on('touchstart', '.AlertBoxDivContent', function (event) {
// if (AlertBoxSetting.TouchClose == true) {
// //關閉觸發click
// event.stopPropagation();
// }
//});
//$(document).on('touchstart', '.AlertBoxDiv', function (event) {
// if (AlertBoxSetting.TouchClose == true) {
// //執行關閉
// alertClose('cancel', null, 'click');
// }
//});
//以下為相容舊版本函數
if (AlertBoxSetting.Compatible == true) {
//alert
alert_S = function (Html, OnEnd, Setting) {
Setting = Setting ? Setting : { style: '' };
alertBox({
Mode: 'alert',
Html: Html ? Html : '',
//Title: '',
OutsideStyle: Setting.style ? Setting.style : '',
OnEnd: OnEnd ? OnEnd : null,
});
};
//confirm
confirm_S = function (Html, OnOK, OnCancel, Setting) {
Setting = Setting ? Setting : {
style: '',
onStart: function () { },
onBeforeEnd: function () { return true; }
};
alertBox({
Mode: 'confirm',
Html: Html ? Html : '',
//Title: '',
OutsideStyle: Setting.style ? Setting.style : '',
OnReady: Setting.onStart ? Setting.onStart : null,
OnOK: OnOK ? OnOK : null,
OnCancel: OnCancel ? OnCancel : null,
OnClose: Setting.onBeforeEnd ? Setting.onBeforeEnd : null,
});
};
//prompt (單一輸入)
prompt_S = function (Html, OnOK, Setting, OnCancel) {
Setting = Setting ? Setting : {
style: '',
value: '',
placeholder: '輸入...',
textarea: false,
filter: '',
select: false,
required: true,
};
alertBox({
Mode: 'prompt',
Html: Html ? Html : '',
//Title: '',
OutsideStyle: Setting.style ? Setting.style : '',
OnOK: OnOK ? OnOK : null,
OnCancel: OnCancel ? OnCancel : null,
Setting: {
Mode: Setting.textarea == true ? 'textarea' : 'text',
Value: Setting.value ? Setting.value : '',
Placeholder: Setting.placeholder ? Setting.placeholder : '輸入...',
Select: Setting.select ? Setting.select : false,
Required: Setting.required === undefined ? true : Setting.required,
},
OnReady: function (Code) {
var tempFilter = Setting.filter ? Setting.filter : null;
if (tempFilter != null) {
$(".AlertBoxDiv[dom-code='" + Code + "']").find('.AlertBoxDivPromptDOM').attr('onkeyup', tempFilter);
}
},
});
};
//prompt (多筆輸入) --- 先跳過
//loading
loading_S = function (Html, OnReady, Setting) {
Setting = Setting ? Setting : { style: '' };
alertBox({
Mode: 'loading',
Html: Html ? Html : '',
Title: '',
Ctrl: '',
OutsideStyle: Setting.style ? Setting.style : '',
OnReady: OnReady ? OnReady : null,
});
};
loading_S_msg = function (Html) {
$(".AlertBoxDiv:last").find('.AlertBoxDivHtml').html(Html);
};
loading_S_end = function (Html, Speed, OnEnd) {
alertLoadingEnd(Html, Speed, OnEnd);
};
//wait --- 先跳過
//float
float_S = function (Html, Setting, OnRun, OnEnd) {
Setting = Setting ? Setting : {
style: '',
boxstyle: '',
titlestyle: '',
ctrlstyle: '',
touchclose: false,
titlehtml: '',
ctrlhtml: '',
};
alertBox({
Mode: 'alert',
Html: Html ? Html : '',
Title: Setting.titlehtml ? Setting.titlehtml : '',
Ctrl: Setting.ctrlhtml ? Setting.ctrlhtml : '<button onclick="float_S_end(\'OnClose\')" type="button" class="button btn_white"><i class="fa fa-times"></i>&nbsp;' + AlertBoxSetting.CancelText + '</button>',
OutsideStyle: Setting.style ? Setting.style : '',
TitleStyle: Setting.titlestyle ? Setting.titlestyle : '',
InsideStyle: Setting.boxstyle ? Setting.boxstyle : '',
CtrlStyle: Setting.ctrlstyle ? Setting.ctrlstyle : '',
TouchClose: Setting.touchclose === undefined ? false : Setting.touchclose,
OnRun: OnRun ? OnRun : null,
OnEnd: OnEnd ? OnEnd : null,
});
};
float_S_end = function (Type) {
if (Type == 'OnClose') {
alertClose('over');
} else {
alertClose();
}
};
};

2023
api/UseJS/dropdown2.js Normal file

File diff suppressed because it is too large Load Diff

795
api/UseJS/tablelist.js Normal file
View File

@@ -0,0 +1,795 @@
/*
Ver 1.5.2
★ 標籤語法:
變數使用方式預設為:@變數名稱 @物件名稱-變數名稱 {@變數名稱} {@物件名稱-變數名稱} 等四種方式,也可自由定義
範例:@row @tablename-row {@row} {@tablename-row}
tbl-repeat="物件名稱" ※ 在需要複製的 DOM 物件上加上此標籤,可添加在複數物件上,物件之間必須緊貼並具連續性,
以防止建立 DOM 時產生錯位的問題,帶參數時請使用 "@變數名稱" 或是 "@物件名稱-變數名稱" 帶入,
範例如下:
<tr tbl-repeat="物件名稱">
<td rowspan="2">@row</td>
<td>@value</td>
</tr>
<tr tbl-repeat="物件名稱">
<td colspan="2">
<button onclick="自訂函數(TableListGetItem('物件名稱',@index))" type="button">按鈕</button>
</td>
</tr>
tbl-build="物件名稱-NoData" ※ 當查無資料時,所顯示之物件,此為唯一物件,範例如下:
<tr tbl-build="物件名稱-NoData">
<td colspan="2">查無資料</td>
</tr>
tbl-build="物件名稱-PageDrop" ※ 換頁下拉選單容器,此為唯一物件,範例:<div tbl-build="物件名稱-PageDrop"></div>
tbl-build="物件名稱-PerDrop" ※ 每頁筆數下拉選單容器,此為唯一物件,範例:<div tbl-build="物件名稱-PerDrop"></div>
tbl-build="物件名稱-Count" ※ 查詢到的資料總筆數,此為唯一物件,範例:<span tbl-build="物件名稱-Count"></span>
tbl-build="物件名稱-RunBtn" ※ 執行按鈕,可複數添加,範例如下:
<button tbl-build="物件名稱-RunBtn" type="button" class="button btn_miku">查詢</button>
tbl-keep="物件名稱-Enter" ※ 用於監視輸入欄位,在按下 Enter 時自動執行查詢功能,可複數添加,範例如下:
<input tbl-keep="物件名稱-Enter" type="text" />
tbl-keep="物件名稱-CheckAll" ※ 用於流水號全選(勾選)元件的監視與功能響應,僅可用於流水號操作,範例如下:
<input tbl-keep="物件名稱-CheckAll" type="checkbox" />
tbl-keep="物件名稱-CheckBox" ※ 用於流水號勾選元件的監視,僅可用於流水號操作,亦可用於單選 (radio),範例如下:
<input tbl-keep="物件名稱-CheckBox" type="radio" />
<input tbl-keep="物件名稱-CheckBox" type="checkbox" />
tbl-show="判斷式" ※ 此為全域判斷功能,也可帶入函數使用回傳 true 或 false 即可,
若需要判斷之變數格式為字串,必須在頭尾加上 ' 符號,範例如下:
<td tbl-show="'@string'=='字串'">@string</td>
===================================================================================================================================
★ 調用函數:
定義列表套件 > TableListBuild({ 設定參數 }) ※ 設定參數在下一階段說明
執行查詢 > TableListRun('物件名稱') ※ 定義列表套件完成時就會自動執行
前往指定頁數 > TableListSetPage('物件名稱',頁數) ※ 若超過最大頁數,就會到最後一頁
取得指定位置資料 > TableListGetItem('物件名稱', @index) ※ 取得單筆資料,@index 也可為 @物件名稱-index (提供按鈕傳輸資料所使用)
取得當前所勾選的資料 > var array = TableListGetCheck('物件名稱') ※ 資料以陣列 (array) 形式回傳
執行全域顯示判斷 > TableListApply() ※ 配合 tbl-show 所使用,通常放在 OnEnd 函數中做使用
===================================================================================================================================
★ 設定參數 (*為必填)
*物件名稱 Name ※ 輸入字串名稱
*取得查詢參數 GetSearch ※ 請帶 function (ReSearch) { 還需判斷Recover功能之套用詳見範例 return Search; }
此處 ReSearch 等同於 Search 參數
*取得資料總筆數 GetCount ※ 請帶 function (Option) { return Count; }
此處 Option 變數僅包含 Search 參數
執行 Ajax 時請使用同步調用 (async = false)
*執行資料撈取 GetData ※ 請帶 function (Option) { return DataArray; }
此處 Option 變數包含 Offset、Fetch、NowPage、PerPage、Search 等參數
執行 Ajax 時請使用同步調用 (async = false)
回傳之 DataArray 陣列中資料須保留變數名稱供套件使用:{@row}、{@index}
開始執行函數 OnStart ※ 請帶 function () { }
結束執行函數 OnEnd ※ 請帶 function () { }
起始所在頁數 NowPage (預設:1) ※ 若開啟 Recover 功能則此設定會優先 Recover 紀錄之參數
預設每頁筆數 PerPage (預設:10) ※ 若開啟 Recover 功能則此設定會優先 Recover 紀錄之參數
狀態還原功能開關 Recover (預設:false) ※ 若開啟則使用者在返回頁面的時候會還原上一次的查詢狀態
檢查總筆數是否正確 CountCheck (預設:true) ※ 檢查 Count 總筆數是否正確 若不正確就同步
自定義換頁文字 PageFormat (預設:'第 Page 頁') ※ 其中 Page 為固定參數不可移除
自定義每頁文字 PerFormat (預設:'每頁顯示 Per 筆') ※ 其中 Per 為固定參數不可移除
設定每頁筆數結構 PerSet (預設:[10, 20, 30, 50, 100, 200, 500, 1000])
自定義套用語法格式 StrFormat (預設:[{ Start: '{@', End: '}' }, { Start: '@', End: '' }])
※ 請注意陣列中之自定義語法,必須由複雜至精簡,才能正常運作
===================================================================================================================================
★ 定義語法範例: ( 請注意於內部函數所執行之 Ajax 都必須以同步方式執行 async = false )
TableListBuild({
Name: '變數名稱',
NowPage: 1,
PerPage: 10,
PageFormat: '第 Page 頁',
PerFormat: '每頁顯示 Per 筆',
PerSet: [10, 20, 30, 50, 100, 200, 500, 1000],
Recover: true,
OnStart: function () {
//自動執行前執行之函數
//執行讀取動畫 (範例)
NProgress.start();
},
GetSearch: function (ReSearch) {
//開啟 Recover 功能時需要將記錄的資料套用回介面上的物件
if (ReSearch) {
$('#KeyWord').val(ReSearch.KeyWord);
$('#KeyWord2').val(ReSearch.KeyWord2);
}
//讀取介面上的物件數值傳送到 Search 變數之中
var Search = {
KeyWord: $('#KeyWord').val(),
KeyWord2: $('#KeyWord2').val(),
}
return Search;
},
GetCount: function (Option) {
//執行讀取動畫 (範例)
NProgress.start();
//設定Ajax要傳輸的資料 (此處須包含 Search 參數才會撈出正確的總筆數)
var tempData = {
Type: 'GetCount',
KeyWord: Option.Search.KeyWord,
KeyWord2: Option.Search.KeyWord2,
};
var Count = tools.ajax(tempData, ashxPath).Count;
return Count;
},
GetData: function (Option) {
//執行讀取動畫 (範例)
NProgress.start();
//設定Ajax要傳輸的資料 (其中 Offset、Fetch 為 SQL 查詢資料時所需要之參數 )
var tempData = {
Type: 'GetData',
Offset: Option.Offset,
Fetch: Option.Fetch,
KeyWord: Option.Search.KeyWord,
KeyWord2: Option.Search.KeyWord2,
};
var DataArray = tools.ajax(tempData, ashxPath).Data;
return DataArray;
},
OnEnd: function () {
//完成查詢時所執行之回調函數放此處
//結束讀取動畫 (範例)
NProgress.done();
},
});
===================================================================================================================================
*/
//宣告專用變數儲存物件
var TableListTempData = {};
//資料驗證/定義預設值/型態檢查
TableListSettingCheck = function (Setting) {
Setting.Success = true;
//必填項目檢查
if (!Setting) { console.info('缺乏參數[Setting]設定!'); Setting.Success = false; };
if (!Setting.Name) { console.info('缺乏參數[Name]設定!'); Setting.Success = false; };
if (!Setting.GetCount) { console.info('缺乏函數[GetCount]設定!'); Setting.Success = false; };
if (!Setting.GetSearch) { console.info('缺乏函數[GetSearch]設定!'); Setting.Success = false; };
if (!Setting.GetData) { console.info('缺乏函數[GetData]設定!'); Setting.Success = false; };
//定義預設值
Setting.DataArray = Setting.DataArray ? Setting.DataArray : []; //撈取資料前先套用空白資料陣列
Setting.Count = Setting.Count ? Setting.Count : 0; //撈取資料前先套用 0
Setting.AllPage = Setting.AllPage ? Setting.AllPage : 1; //撈取資料前先套用 1
Setting.DomHtml = Setting.DomHtml ? Setting.DomHtml : {}; //撈取資料前先套用空白物件
Setting.Option = Setting.Option ? Setting.Option : {}; //撈取資料前先套用空白物件
Setting.Search = Setting.Search ? Setting.Search : null; //撈取資料前先套用空值
Setting.NowPage = Setting.NowPage ? Setting.NowPage : 1; //起始所在頁數
Setting.PerPage = Setting.PerPage ? Setting.PerPage : 10; //預設每頁筆數
Setting.PageFormat = Setting.PageFormat ? Setting.PageFormat : '第 Page 頁'; //自定義 換頁文字
Setting.PerFormat = Setting.PerFormat ? Setting.PerFormat : '每頁顯示 Per 筆'; //自定義 每頁文字
Setting.PerSet = Setting.PerSet ? Setting.PerSet : [10, 20, 30, 50, 100, 200, 500, 1000]; //設定每頁筆數結構
Setting.Recover = Setting.Recover ? Setting.Recover : false; //紀錄查詢及換頁狀態
Setting.CountCheck = Setting.CountCheck == true ? Setting.CountCheck : false; //檢查 Count 總筆數是否正確 若不正確就同步
//定義預設值 自定義 套用語法格式
Setting.StrFormat = Setting.StrFormat ? Setting.StrFormat : [
{ Start: '{@', End: '}' },
{ Start: '@', End: '' },
];
//型態檢查
if (typeof (Setting) != 'object') { console.info('參數[Setting]格式錯誤!必須為 object'); Setting.Success = false; };
if (typeof (Setting.Name) != 'string') { console.info('參數[Name]格式錯誤!必須為 string'); Setting.Success = false; };
if (typeof (Setting.GetCount) != 'function') { console.info('函數[GetCount]格式錯誤!必須為 function'); Setting.Success = false; };
if (typeof (Setting.GetSearch) != 'function') { console.info('函數[GetSearch]格式錯誤!必須為 function'); Setting.Success = false; };
if (typeof (Setting.GetData) != 'function') { console.info('函數[GetData]格式錯誤!必須為 function'); Setting.Success = false; };
if (typeof (Setting.NowPage) != 'number') { console.info('參數[NowPage]格式錯誤!必須為 number'); Setting.Success = false; };
if (typeof (Setting.PerPage) != 'number') { console.info('參數[PerPage]格式錯誤!必須為 number'); Setting.Success = false; };
if (typeof (Setting.PageFormat) != 'string') { console.info('參數[PageFormat]格式錯誤!必須為 string'); Setting.Success = false; };
if (typeof (Setting.PerFormat) != 'string') { console.info('參數[PerFormat]格式錯誤!必須為 string'); Setting.Success = false; };
if (typeof (Setting.PerSet) != 'object') { console.info('參數[PerSet]格式錯誤!必須為 array'); Setting.Success = false; };
if (typeof (Setting.Recover) != 'boolean') { console.info('參數[PerSet]格式錯誤!必須為 boolean'); Setting.Success = false; };
if (typeof (Setting.CountCheck) != 'boolean') { console.info('參數[CountCheck]格式錯誤!必須為 boolean'); Setting.Success = false; };
//下拉選單ID設定
Setting.PageDropID = Setting.PageDropID ? Setting.PageDropID : 'TableList_' + Setting.Name + '_PageDrop';
Setting.PerDropID = Setting.PerDropID ? Setting.PerDropID : 'TableList_' + Setting.Name + '_PerDrop';
//恢復記錄過的資料 ( Recover相關 )
if (Setting.Recover == true && TableListRecoverLoad(Setting.Name) != null) {
var StorageLoad = TableListRecoverLoad(Setting.Name);
Setting.Count = StorageLoad.Count;
Setting.AllPage = StorageLoad.AllPage;
Setting.NowPage = StorageLoad.NowPage;
Setting.PerPage = StorageLoad.PerPage;
}
return Setting;
};
//定義物件
TableListBuild = function (Setting) {
//等待所有 js 檔案完全執行完畢才開始定義 防止跟其他架框模組相衝 (angularjs)
$(function () {
//資料驗證
Setting = TableListSettingCheck(Setting);
if (Setting.Success == false) { return; }
//轉換替代名稱
var Name = Setting.Name;
//存入資料物件矩陣
TableListTempData[Name] = Setting;
//取得 Name 物件 DOM 的 Html (顯示判斷執行過查詢後才跑)
var tempXPath = TableListGetXPath('repeat', Name, null);
TableListGetDomHtml(Name, 'Data', tempXPath);
//取得 NoData 擴充物件 DOM 的 Html (顯示判斷執行過查詢後才跑)
tempXPath = TableListGetXPath('build', Name, 'NoData');
TableListGetDomHtml(Name, 'NoData', tempXPath);
//擴充物件 PageDrop 建立
TableListPluginPageDrop(Name);
//擴充物件 PerDrop 建立
TableListPluginPerDrop(Name);
//預先套用資料筆數 (這樣在執行前畫面的筆數上才不會出現空白無資料)
tempXPath = TableListGetXPath('build', Name, 'Count');
$(tempXPath).html(TableListTempData[Name].Count);
//設置查詢按鈕 onclick 事件
tempXPath = TableListGetXPath('build', Name, 'RunBtn');
$(tempXPath).attr('onclick', "TableListRun('" + Name + "')");
//勾選元件 CheckAll 全選按鈕 onchange 事件
tempXPath = TableListGetXPath('keep', Name, 'CheckAll');
$(tempXPath).attr('onchange', "TableListCheckAll('" + Name + "')");
//設置鍵盤監視 (用在關鍵字查詢時的 Enter 事件)
tempXPath = TableListGetXPath('keep', Name, 'Enter');
$(tempXPath).keyup(function (event) {
if (event.keyCode == 13) {
TableListRun(Name);
}
});
//執行開始函數
if (typeof (TableListTempData[Name].OnStart) == 'function') {
TableListTempData[Name].OnStart();
}
//主動執行
TableListRun(Name, 'First');
});
};
//執行查詢
TableListRun = function (Name, Type) {
//換頁、切換每頁筆數 執行時,不執行取得總筆數(GetCount)以及關鍵字取得的函數(GetSearch)
if (Type != 'DropSkip') {
//取得查詢條件 若啟動 Recover 功能 則提供上一次的 Option.Search 紀錄 ( Recover相關 )
if (Type == 'First' &&
TableListTempData[Name].Recover == true &&
TableListRecoverLoad(Name) != null) {
TableListTempData[Name].Search = TableListTempData[Name].GetSearch(TableListRecoverLoad(Name).Search);
} else {
TableListTempData[Name].Search = TableListTempData[Name].GetSearch();
}
////執行函數 取得總筆數 (提供 Search 參數)
//TableListTempData[Name].Count = TableListTempData[Name].GetCount({
// Search: TableListTempData[Name].Search,
//});
//正常查詢 非首次執行 且不是指定換頁時 需要強迫返回第1頁 ( Recover相關 )
if (Type != 'First' && Type != 'SetPage') {
TableListTempData[Name].NowPage = 1;
}
}
//執行函數 取得總筆數 (提供 Search 參數)
TableListTempData[Name].Count = TableListTempData[Name].GetCount({
Search: TableListTempData[Name].Search,
});
//判斷是否超過最大頁數 超過就到最後一頁
if (TableListTempData[Name].NowPage > TableListTempData[Name].AllPage) {
TableListTempData[Name].NowPage = TableListTempData[Name].AllPage;
}
//執行資料撈取 (提供 Option 變數)
TableListTempData[Name].Option = {
Offset: (TableListTempData[Name].NowPage - 1) * TableListTempData[Name].PerPage,
Fetch: TableListTempData[Name].PerPage,
NowPage: TableListTempData[Name].NowPage,
PerPage: TableListTempData[Name].PerPage,
//AllPage: TableListTempData[Name].AllPage,
//Count: TableListTempData[Name].Count,
Search: TableListTempData[Name].Search,
};
TableListTempData[Name].DataArray = TableListTempData[Name].GetData(TableListTempData[Name].Option);
//套用保留變數 ( 同時記錄最大的 row 讓後面的 Count 可以驗證 )
var maxRow = 0;
for (var i = 0; i < TableListTempData[Name].DataArray.length; i++) {
TableListTempData[Name].DataArray[i]['row'] = (TableListTempData[Name].NowPage * TableListTempData[Name].PerPage) + (i + 1) - TableListTempData[Name].PerPage;
TableListTempData[Name].DataArray[i]['index'] = i;
//記錄最大的 row
maxRow = TableListTempData[Name].DataArray[i]['row'];
}
//再次檢查 Count 總筆數是否正確 若不正確就同步
if (maxRow > TableListTempData[Name].Count && TableListTempData[Name].CountCheck == true) {
TableListTempData[Name].Count = maxRow;
}
//套用資料總筆數
tempXPath = TableListGetXPath('build', Name, 'Count');
$(tempXPath).html(TableListTempData[Name].Count);
//計算頁數
TableListTempData[Name].AllPage = Math.ceil(TableListTempData[Name].Count / TableListTempData[Name].PerPage)
TableListTempData[Name].AllPage = TableListTempData[Name].AllPage == 0 ? 1 : TableListTempData[Name].AllPage;
//擴充物件 PageDrop 建立
TableListPluginPageDrop(Name);
//擴充物件 PerDrop 建立
TableListPluginPerDrop(Name);
//渲染 DomHtml 函數
TableListDomHtmlBuild(Name);
//儲存查詢操作狀態 (不管有沒有開啟都記錄 才可以動態修改)
TableListRecoverSave(Name);
//擴充物件 NoData 顯示判斷
TableListPluginNoData(Name);
//還原勾選元件 CheckAll 的勾選狀態
var EvenTag = TableListGetXPath('keep', Name, 'CheckAll');
$(EvenTag).prop('checked', false);
//執行結束函數
if (typeof (TableListTempData[Name].OnEnd) == 'function') {
TableListTempData[Name].OnEnd();
}
};
//前往指定頁數
TableListSetPage = function (Name, Page) {
//更改換頁下拉選單資訊
DropListSet(TableListTempData[Name].PageDropID, [Page]);
TableListTempData[Name].NowPage = Page;
//執行查詢
TableListRun(Name, 'SetPage');
};
//渲染 DomHtml 函數
TableListDomHtmlBuild = function (Name) {
//先移除物件 (才不會重複置入)
var tempXPath = TableListGetXPath('repeat', Name, null);
$(tempXPath).remove();
tempXPath = TableListGetXPath('build', Name, 'NoData');
$(tempXPath).remove();
//渲染資料陣列到畫面上 (取得父容器位置)
var EvenTag = TableListGetParentXPath('Data', Name);
//迴圈 資料陣列
for (var d = 0; d < TableListTempData[Name].DataArray.length; d++) {
//迴圈 DomHtml 模組
for (var m = 0; m < TableListTempData[Name].DomHtml.Data.length; m++) {
//擷取 Html
var tempHtml = TableListTempData[Name].DomHtml.Data[m];
//過濾資料陣列變數
var tempStr = [];
for (var str in TableListTempData[Name].DataArray[d]) {
tempStr.push({
Str: str,
Length: str.length,
});
}
//文字排序 由長至短
tempStr.sort(function (a, b) { return b['Length'] - a['Length']; });
//迴圈 資料陣列變數
for (var i = 0; i < tempStr.length; i++) {
//取出資料名稱
var str = tempStr[i].Str;
for (var s = 0; s < TableListTempData[Name].StrFormat.length; s++) {
//取出頭尾取代字串
var start = TableListTempData[Name].StrFormat[s].Start;
var end = TableListTempData[Name].StrFormat[s].End;
//製作標籤 (單純的標籤,例如:{@row})
var regex = new RegExp(start + str + end, 'g');
//取代資料
tempHtml = tempHtml.replace(regex, TableListTempData[Name].DataArray[d][str]);
//製作標籤 (複合式標籤,例如:{@物件名稱-row})
regex = new RegExp(start + Name + '-' + str + end, 'g');
//取代資料
tempHtml = tempHtml.replace(regex, TableListTempData[Name].DataArray[d][str]);
}
}
//推入資料
$(EvenTag).append(tempHtml);
}
}
};
//擴充物件 NoData 顯示判斷
TableListPluginNoData = function (Name) {
//使用 XPath 選取 DOM 物件 (包含父容器)
var ParentEvenTag = TableListGetParentXPath('NoData', Name);
var EvenTag = TableListGetXPath('build', Name, 'NoData');
if (TableListTempData[Name].DataArray.length == 0) {
$(ParentEvenTag).append(TableListTempData[Name].DomHtml.NoData);
} else {
$(EvenTag).remove();
}
};
//擴充物件 PageDrop 建立
TableListPluginPageDrop = function (Name) {
//使用 XPath 選取 DOM 物件
var EvenTag = TableListGetXPath('build', Name, 'PageDrop');
if ($(EvenTag).length == 0) { return; }
//容器設定 (須配合套件 _dropdown2.js)
$(EvenTag).attr('id', TableListTempData[Name].PageDropID);
$(EvenTag).addClass('DropList');
//若超過300頁 就開啟查詢優先模式
var TempSearchPriority = false;
if (TableListTempData[Name].AllPage >= 300) {
TempSearchPriority = true;
}
//取得自定義文字設定
var TempFormat = TableListTempData[Name].PageFormat.split('Page');
var TempFormatA = '';
var TempFormatB = '';
TempFormatA = TempFormat[0];
TempFormatB = TempFormat[1];
//製作下拉選單變數
var TempData = [{ Optgroup: '', Option: [] }];
for (var i = 0; i < TableListTempData[Name].AllPage; i++) {
TempData[0].Option.push({
Text: TempFormatA + (i + 1) + TempFormatB,
Val: (i + 1)
});
}
////超過300頁 就開啟群組模式 --- 暫時不使用
//var CheckGroupList = false;
//var TempData = [];
//if (TableListTempData[Name].AllPage >= 300) {
//
// //超過300筆就使用群組分組
// CheckGroupList = true;
//
// var tempRange = 100;
// var tempCount = Math.ceil(TableListTempData[Name].AllPage / tempRange);
//
// for (var g = 1; g <= tempCount; g++) {
//
// var tempStart = g * tempRange - tempRange + 1;
// var tempEnd = ((g + 1) * tempRange - tempRange) >= TableListTempData[Name].AllPage ? TableListTempData[Name].AllPage : ((g + 1) * tempRange - tempRange);
//
// var tempOption = [];
// for (var i = 0; i < TableListTempData[Name].AllPage; i++) {
// if ((i + 1) >= tempStart && (i + 1) <= tempEnd) {
// tempOption.push({
// Text: TempFormatA + (i + 1) + TempFormatB,
// Val: (i + 1)
// });
// }
// }
//
// TempData.push({
// Optgroup: tempStart + ' 至 ' + tempEnd,
// Option: tempOption
// })
//
// }
//
//} else {
//
// //沒超過就正常套用
// TempData = [{ Optgroup: '', Option: [] }];
// for (var i = 0; i < TableListTempData[Name].AllPage; i++) {
// TempData[0].Option.push({
// Text: TempFormatA + (i + 1) + TempFormatB,
// Val: (i + 1)
// });
// }
//
//}
//建立下拉選單
DropListSetting({
ID: TableListTempData[Name].PageDropID,
Data: TempData,
Select: [TableListTempData[Name].NowPage],
Class: 'button btn_white',
ArrowChange: true,
ArrowClass: 'button btn_white',
Search: true,
//GroupList: CheckGroupList,
//GroupListStart: CheckGroupList,
SearchPriority: TempSearchPriority,
OnEnd: function (Select) {
//套用資料
TableListTempData[Name].NowPage = Select[0];
//執行 Run 函數 (換頁也必須跑 GetCount 不然可能跟真實資料有差異)
TableListRun(Name, 'DropSkip');
}
});
};
//擴充物件 PerDrop 建立
TableListPluginPerDrop = function (Name) {
//使用 XPath 選取 DOM 物件
var EvenTag = TableListGetXPath('build', Name, 'PerDrop');
if ($(EvenTag).length == 0) { return; }
//容器設定 (須配合套件 _dropdown2.js)
$(EvenTag).attr('id', TableListTempData[Name].PerDropID);
$(EvenTag).addClass('DropList');
//取得自定義文字設定
var TempFormat = TableListTempData[Name].PerFormat.split('Per');
var TempFormatA = '';
var TempFormatB = '';
TempFormatA = TempFormat[0];
TempFormatB = TempFormat[1];
//製作下拉選單變數
var TempData = [{ Optgroup: '', Option: [] }];
for (var i = 0; i < TableListTempData[Name].PerSet.length; i++) {
TempData[0].Option.push({
Text: TempFormatA + TableListTempData[Name].PerSet[i] + TempFormatB,
Val: TableListTempData[Name].PerSet[i]
});
}
//檢查 PerPage 是否有在 PerSet 設定之中
var tempCheck = false;
for (var i = 0; i < TableListTempData[Name].PerSet.length; i++) {
if (TableListTempData[Name].PerPage == TableListTempData[Name].PerSet[i]) {
tempCheck = true;
break;
}
}
TableListTempData[Name].PerPage = tempCheck ? TableListTempData[Name].PerPage : TableListTempData[Name].PerSet[0]
//建立下拉選單
DropListSetting({
ID: TableListTempData[Name].PerDropID,
Data: TempData,
Select: [TableListTempData[Name].PerPage],
Class: 'button btn_white',
OnEnd: function (Select) {
//回到第一頁
TableListTempData[Name].NowPage = 1;
//套用資料
TableListTempData[Name].PerPage = Select[0];
//執行 Run 函數
TableListRun(Name, 'DropSkip');
}
});
};
//使用 XPath 選取 DOM 物件函數
TableListGetXPath = function (Mode, Name, XPath) {
var tempXPath = XPath ? '-' + XPath : '';
var EvenTag = "[tbl-" + Mode + "='" + Name + tempXPath + "'],[data-tbl-" + Mode + "='" + Name + tempXPath + "']";
return EvenTag;
};
//使用 XPath 選取父容器 DOM 物件函數
TableListGetParentXPath = function (ObjectName, Name) {
var EvenTag = "[tbl-parent-" + ObjectName.toLowerCase() + "='" + Name + "'],[data-tbl-parent-" + ObjectName.toLowerCase() + "='" + Name + "']";
return EvenTag;
};
//取得物件 DOM 的 Html 套用至矩資料物件陣中
TableListGetDomHtml = function (Name, ObjectName, EvenTag) {
var EvenArray = $(EvenTag);
if (EvenArray.length > 0) {
//添加父容器標籤
$(EvenTag).parent().attr('tbl-parent-' + ObjectName, Name);
//宣告容器
TableListTempData[Name].DomHtml[ObjectName] = [];
//擷取 Html
for (var i = 0; i < EvenArray.length; i++) {
TableListTempData[Name].DomHtml[ObjectName].push(EvenArray[i].outerHTML);
}
//移除物件
EvenArray.remove();
} else {
//返回空值
TableListTempData[Name].DomHtml[ObjectName] = null;
}
};
//Recover儲存功能
TableListRecoverSave = function (Name) {
var StorageSave = TableListTempData[Name].Option;
sessionStorage.setItem('TableListRecoverSave' + Name, JSON.stringify(StorageSave));
};
//Recover讀取功能
TableListRecoverLoad = function (Name) {
var StorageLoad = jQuery.parseJSON(sessionStorage.getItem('TableListRecoverSave' + Name));
return StorageLoad;
};
//取得指定位置資料
TableListGetItem = function (Name, Index) {
return TableListTempData[Name].DataArray[Index];
};
//勾選元件 CheckAll 全選監視
TableListCheckAll = function (Name) {
//取得全選元件的勾選狀態
var EvenTag = TableListGetXPath('keep', Name, 'CheckAll');
var tempAllCheck = $(EvenTag).prop('checked');
//將當前所有 CheckBox 元件與自身同步
EvenTag = TableListGetXPath('keep', Name, 'CheckBox');
$(EvenTag).each(function (index, element) {
element.checked = tempAllCheck;
});
};
//取得所有有勾選的 CheckBox 資料
TableListGetCheck = function (Name) {
var tempArray = [];
var EvenTag = TableListGetXPath('keep', Name, 'CheckBox');
$(EvenTag).each(function (index, element) {
if (element.checked) {
tempArray.push(TableListTempData[Name].DataArray[index]);
}
});
return tempArray;
};
//全域功能 判斷顯示 ( 目前只支援 tbl-show )
TableListApply = function () {
//取得畫面上所有 tbl-show 物件
var EvenTag = "[tbl-show],[data-tbl-show]";
$(EvenTag).each(function (index, element) {
var check = '';
if ($(element).attr('tbl-show')) {
check = $(element).attr('tbl-show');
} else if ($(element).attr('data-tbl-show')) {
check = $(element).attr('data-tbl-show');
}
if (eval(check)) {
$(element).show();
} else {
$(element).hide();
}
});
};

1489
api/UseJS/timepick.js Normal file

File diff suppressed because it is too large Load Diff

4
api/ViewSwitcher.ascx Normal file
View File

@@ -0,0 +1,4 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ViewSwitcher.ascx.cs" Inherits="api.ViewSwitcher" %>
<div id="viewSwitcher">
<%: CurrentView %> view | <a href="<%: SwitchUrl %>" data-ajax="false">Switch to <%: AlternateView %></a>
</div>

43
api/ViewSwitcher.ascx.cs Normal file
View File

@@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Routing;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.AspNet.FriendlyUrls.Resolvers;
namespace api
{
public partial class ViewSwitcher : System.Web.UI.UserControl
{
protected string CurrentView { get; private set; }
protected string AlternateView { get; private set; }
protected string SwitchUrl { get; private set; }
protected void Page_Load(object sender, EventArgs e)
{
// Determine current view
var isMobile = WebFormsFriendlyUrlResolver.IsMobileView(new HttpContextWrapper(Context));
CurrentView = isMobile ? "Mobile" : "Desktop";
// Determine alternate view
AlternateView = isMobile ? "Desktop" : "Mobile";
// Create switch URL from the route, e.g. ~/__FriendlyUrls_SwitchView/Mobile?ReturnUrl=/Page
var switchViewRouteName = "AspNet.FriendlyUrls.SwitchView";
var switchViewRoute = RouteTable.Routes[switchViewRouteName];
if (switchViewRoute == null)
{
// Friendly URLs is not enabled or the name of the switch view route is out of sync
this.Visible = false;
return;
}
var url = GetRouteUrl(switchViewRouteName, new { view = AlternateView, __FriendlyUrls_SwitchViews = true });
url += "?ReturnUrl=" + HttpUtility.UrlEncode(Request.RawUrl);
SwitchUrl = url;
}
}
}

15
api/ViewSwitcher.ascx.designer.cs generated Normal file
View File

@@ -0,0 +1,15 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace api {
public partial class ViewSwitcher {
}
}

31
api/Web.Debug.config Normal file
View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 如需使用 web.config 轉換的詳細資訊,請前往 https://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
在下面的範例中,"SetAttributes" 轉換只會在 "Match" 定位程式找到
值為 "MyDB" 的屬性 "name" 時,才將 "connectionString" 的值變
更為使用 "ReleaseSQLServer"。
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<!--
在下面的範例中,"Replace" 轉換將會取代 web.config 檔案
的整個 <customErrors> 區段。
請注意,因為在 <system.web> 節點之下
只有一個 customErrors 區段,所以不需要使用 "xdt:Locator" 屬性。
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>

32
api/Web.Release.config Normal file
View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 如需使用 web.config 轉換的詳細資訊,請前往 https://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
在下面的範例中,"SetAttributes" 轉換只會在 "Match" 定位程式找到
值為 "MyDB" 的屬性 "name" 時,才將 "connectionString" 的值變
更為使用 "ReleaseSQLServer"。
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<!--
在下面的範例中,"Replace" 轉換將會取代 web.config 檔案
的整個 <customErrors> 區段。
請注意,因為在 <system.web> 節點之下
只有一個 customErrors 區段,所以不需要使用 "xdt:Locator" 屬性。
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>

50
api/Web.config Normal file
View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
如需如何設定 ASP.NET 應用程式的詳細資訊,請前往
https://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.7.2" />
<httpRuntime targetFramework="4.7.2" />
<pages>
<namespaces>
<add namespace="System.Web.Optimization" />
</namespaces>
<controls>
<add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" />
<bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom>
</configuration>

300
api/api.csproj Normal file
View File

@@ -0,0 +1,300 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{0AAF1A40-7A1C-43A6-AFB3-9C127E917B90}</ProjectGuid>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>api</RootNamespace>
<AssemblyName>api</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<UseIISExpress>true</UseIISExpress>
<Use64BitIISExpress />
<IISExpressSSLPort>44375</IISExpressSSLPort>
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
<UseGlobalApplicationHostFile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Core" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Drawing" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
<Reference Include="System.Configuration" />
<Reference Include="System.Web.Services" />
<Reference Include="System.EnterpriseServices" />
<Reference Include="System.Web.DynamicData" />
<Reference Include="System.Web.Entity" />
<Reference Include="System.Web.ApplicationServices" />
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
</Reference>
<Reference Include="AspNet.ScriptManager.bootstrap">
<HintPath>..\packages\AspNet.ScriptManager.bootstrap.3.4.1\lib\net45\AspNet.ScriptManager.bootstrap.dll</HintPath>
</Reference>
<Reference Include="AspNet.ScriptManager.jQuery">
<HintPath>..\packages\AspNet.ScriptManager.jQuery.3.4.1\lib\net45\AspNet.ScriptManager.jQuery.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ScriptManager.MSAjax">
<HintPath>..\packages\Microsoft.AspNet.ScriptManager.MSAjax.5.0.0\lib\net45\Microsoft.ScriptManager.MSAjax.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ScriptManager.WebForms">
<HintPath>..\packages\Microsoft.AspNet.ScriptManager.WebForms.5.0.0\lib\net45\Microsoft.ScriptManager.WebForms.dll</HintPath>
</Reference>
<Reference Include="System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="WebGrease">
<Private>True</Private>
<HintPath>..\packages\WebGrease.1.6.0\lib\WebGrease.dll</HintPath>
</Reference>
<Reference Include="Antlr3.Runtime">
<Private>True</Private>
<HintPath>..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath>
</Reference>
<Reference Include="Microsoft.AspNet.Web.Optimization.WebForms">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Web.Optimization.WebForms.1.1.3\lib\net45\Microsoft.AspNet.Web.Optimization.WebForms.dll</HintPath>
</Reference>
<Reference Include="Microsoft.AspNet.FriendlyUrls">
<HintPath>..\packages\Microsoft.AspNet.FriendlyUrls.Core.1.0.2\lib\net45\Microsoft.AspNet.FriendlyUrls.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http.Formatting">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http.WebHost">
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.7\lib\net45\System.Web.Http.WebHost.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform">
<HintPath>..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="About.aspx" />
<Content Include="Contact.aspx" />
<Content Include="Content\bootstrap-theme.css" />
<Content Include="Content\bootstrap-theme.min.css" />
<Content Include="Content\bootstrap.css" />
<Content Include="Content\bootstrap.min.css" />
<Content Include="Content\Site.css" />
<Content Include="Default.aspx" />
<Content Include="favicon.ico" />
<Content Include="fonts\glyphicons-halflings-regular.svg" />
<Content Include="Global.asax" />
<Content Include="fonts\glyphicons-halflings-regular.woff2" />
<Content Include="fonts\glyphicons-halflings-regular.woff" />
<Content Include="fonts\glyphicons-halflings-regular.ttf" />
<Content Include="fonts\glyphicons-halflings-regular.eot" />
<Content Include="Content\bootstrap.min.css.map" />
<Content Include="Content\bootstrap.css.map" />
<Content Include="Content\bootstrap-theme.min.css.map" />
<Content Include="Content\bootstrap-theme.css.map" />
<None Include="Scripts\jquery-3.4.1.intellisense.js" />
<Content Include="index.aspx" />
<Content Include="menu.js" />
<Content Include="Scripts\bootstrap.js" />
<Content Include="Scripts\bootstrap.min.js" />
<Content Include="Scripts\jquery-3.4.1.js" />
<Content Include="Scripts\jquery-3.4.1.min.js" />
<Content Include="Scripts\jquery-3.4.1.slim.js" />
<Content Include="Scripts\jquery-3.4.1.slim.min.js" />
<Content Include="Scripts\modernizr-2.8.3.js" />
<Content Include="Scripts\WebForms\DetailsView.js" />
<Content Include="Scripts\WebForms\Focus.js" />
<Content Include="Scripts\WebForms\GridView.js" />
<Content Include="Scripts\WebForms\Menu.js" />
<Content Include="Scripts\WebForms\MenuStandards.js" />
<Content Include="Scripts\WebForms\MSAjax\MicrosoftAjax.js" />
<Content Include="Scripts\WebForms\MSAjax\MicrosoftAjaxApplicationServices.js" />
<Content Include="Scripts\WebForms\MSAjax\MicrosoftAjaxComponentModel.js" />
<Content Include="Scripts\WebForms\MSAjax\MicrosoftAjaxCore.js" />
<Content Include="Scripts\WebForms\MSAjax\MicrosoftAjaxGlobalization.js" />
<Content Include="Scripts\WebForms\MSAjax\MicrosoftAjaxHistory.js" />
<Content Include="Scripts\WebForms\MSAjax\MicrosoftAjaxNetwork.js" />
<Content Include="Scripts\WebForms\MSAjax\MicrosoftAjaxSerialization.js" />
<Content Include="Scripts\WebForms\MSAjax\MicrosoftAjaxTimer.js" />
<Content Include="Scripts\WebForms\MSAjax\MicrosoftAjaxWebForms.js" />
<Content Include="Scripts\WebForms\MSAjax\MicrosoftAjaxWebServices.js" />
<Content Include="Scripts\WebForms\SmartNav.js" />
<Content Include="Scripts\WebForms\TreeView.js" />
<Content Include="Scripts\WebForms\WebForms.js" />
<Content Include="Scripts\WebForms\WebParts.js" />
<Content Include="Scripts\WebForms\WebUIValidation.js" />
<Content Include="Site.Master" />
<Content Include="UseCSS\alert2.css" />
<Content Include="UseCSS\button2.css" />
<Content Include="UseCSS\dropdown2.css" />
<Content Include="UseCSS\table2.css" />
<Content Include="UseCSS\timepick.css" />
<Content Include="UseJS\alert2.js" />
<Content Include="UseJS\dropdown2.js" />
<Content Include="UseJS\tablelist.js" />
<Content Include="UseJS\timepick.js" />
<Content Include="ViewSwitcher.ascx" />
<Content Include="Web.config" />
<Content Include="Bundle.config" />
<Content Include="Site.Mobile.Master" />
</ItemGroup>
<ItemGroup>
<Compile Include="App_Start\BundleConfig.cs" />
<Compile Include="About.aspx.cs">
<DependentUpon>About.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="About.aspx.designer.cs">
<DependentUpon>About.aspx</DependentUpon>
</Compile>
<Compile Include="App_Start\RouteConfig.cs" />
<Compile Include="App_Start\WebApiConfig.cs" />
<Compile Include="Product.cs" />
<Compile Include="Contact.aspx.cs">
<DependentUpon>Contact.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Contact.aspx.designer.cs">
<DependentUpon>Contact.aspx</DependentUpon>
</Compile>
<Compile Include="Default.aspx.cs">
<DependentUpon>Default.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Default.aspx.designer.cs">
<DependentUpon>Default.aspx</DependentUpon>
</Compile>
<Compile Include="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon>
</Compile>
<Compile Include="index.aspx.cs">
<DependentUpon>index.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="index.aspx.designer.cs">
<DependentUpon>index.aspx</DependentUpon>
</Compile>
<Compile Include="ProductsController.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Site.Master.cs">
<DependentUpon>Site.Master</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Site.Master.designer.cs">
<DependentUpon>Site.Master</DependentUpon>
</Compile>
<Compile Include="Site.Mobile.Master.cs">
<DependentUpon>Site.Mobile.Master</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Site.Mobile.Master.designer.cs">
<DependentUpon>Site.Mobile.Master</DependentUpon>
</Compile>
<Compile Include="ViewSwitcher.ascx.cs">
<DependentUpon>ViewSwitcher.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ViewSwitcher.ascx.designer.cs">
<DependentUpon>ViewSwitcher.ascx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />
<Folder Include="Controllers\" />
<Folder Include="Models\" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
<Content Include="Scripts\jquery-3.4.1.slim.min.map" />
<Content Include="Scripts\jquery-3.4.1.min.map" />
<None Include="Web.Debug.config">
<DependentUpon>Web.config</DependentUpon>
</None>
<None Include="Web.Release.config">
<DependentUpon>Web.config</DependentUpon>
</None>
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>True</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>61734</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>https://localhost:44375/</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>False</UseCustomServer>
<CustomServerUrl>
</CustomServerUrl>
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>此專案參考這部電腦上所缺少的 NuGet 套件。請啟用 NuGet 套件還原,以下載該套件。如需詳細資訊,請參閱 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的檔案是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

37
api/api.csproj.user Normal file
View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<UseIISExpress>true</UseIISExpress>
<Use64BitIISExpress />
<IISExpressSSLPort>44375</IISExpressSSLPort>
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
<UseGlobalApplicationHostFile />
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
</PropertyGroup>
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<StartPageUrl>Default.aspx</StartPageUrl>
<StartAction>SpecificPage</StartAction>
<AspNetDebugging>True</AspNetDebugging>
<SilverlightDebugging>False</SilverlightDebugging>
<NativeDebugging>False</NativeDebugging>
<SQLDebugging>False</SQLDebugging>
<ExternalProgram>
</ExternalProgram>
<StartExternalURL>
</StartExternalURL>
<StartCmdLineArguments>
</StartCmdLineArguments>
<StartWorkingDirectory>
</StartWorkingDirectory>
<EnableENC>True</EnableENC>
<AlwaysStartWebServerOnDebug>False</AlwaysStartWebServerOnDebug>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
</Project>

BIN
api/bin/Antlr3.Runtime.dll Normal file

Binary file not shown.

BIN
api/bin/Antlr3.Runtime.pdb Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,206 @@
<?xml version="1.0" encoding="utf-8"?>
<doc>
<assembly>
<name>Microsoft.AspNet.FriendlyUrls</name>
</assembly>
<members>
<member name="T:Microsoft.AspNet.FriendlyUrls.FriendlyUrl"></member>
<member name="M:Microsoft.AspNet.FriendlyUrls.FriendlyUrl.Href(System.String,System.Object[])"></member>
<member name="M:Microsoft.AspNet.FriendlyUrls.FriendlyUrl.Resolve(System.String)">
<summary> Resolves a file handler virtual path to a friendly URL using the registered resolvers. </summary>
<returns>The friendly URL.</returns>
<param name="virtualPath">The handler virtual path.</param>
</member>
<member name="P:Microsoft.AspNet.FriendlyUrls.FriendlyUrl.Segments">
<summary> The URL segments left over after Friendly URLs mapped this request to a file. </summary>
</member>
<member name="T:Microsoft.AspNet.FriendlyUrls.FriendlyUrlSettings">
<summary>Represents the settings used when enabling Friendly URLs.</summary>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.FriendlyUrlSettings.#ctor">
<summary>Creates a new instance of the FriendlyUrlSettings class with the default values.</summary>
</member>
<member name="P:Microsoft.AspNet.FriendlyUrls.FriendlyUrlSettings.AutoRedirectMode">
<summary>The type of redirect to perform on non-friendly URLs to friendly URLs. Defaults to Off.</summary>
<returns>Returns <see cref="T:Microsoft.AspNet.FriendlyUrls.RedirectMode" />.</returns>
</member>
<member name="P:Microsoft.AspNet.FriendlyUrls.FriendlyUrlSettings.ResolverCachingMode">
<summary>The mode of caching to use when resolving friendly URLs. Defaults to ResolverCachingMode.Static.</summary>
<returns>Returns <see cref="T:Microsoft.AspNet.FriendlyUrls.ResolverCachingMode" />.</returns>
</member>
<member name="P:Microsoft.AspNet.FriendlyUrls.FriendlyUrlSettings.SwitchViewRouteName">
<summary>The name of the route that handles user requests to switch views. Defaults to "AspNet.FriendlyUrls.SwitchView".</summary>
<returns>Returns <see cref="T:System.String" />.</returns>
</member>
<member name="P:Microsoft.AspNet.FriendlyUrls.FriendlyUrlSettings.SwitchViewUrl">
<summary>The URL that view switching request are sent to. Defaults to "__FriendlyUrls_SwitchView/{view}".</summary>
<returns>Returns <see cref="T:System.String" />.</returns>
</member>
<member name="T:Microsoft.AspNet.FriendlyUrls.HttpRequestExtensions"></member>
<member name="M:Microsoft.AspNet.FriendlyUrls.HttpRequestExtensions.GetFriendlyUrlFileExtension(System.Web.HttpRequest)">
<summary> Returns the extension of the file Friendly URLs mapped this request to. </summary>
<returns>The file extension, e.g. .aspx.</returns>
<param name="httpRequest">The HttpRequest object.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.HttpRequestExtensions.GetFriendlyUrlFileExtension(System.Web.HttpRequestBase)">
<summary> Returns the extension of the file Friendly URLs mapped this request to. </summary>
<returns>The file extension, e.g. .aspx.</returns>
<param name="httpRequest">The HttpRequestBase object.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.HttpRequestExtensions.GetFriendlyUrlFileVirtualPath(System.Web.HttpRequest)">
<summary> Returns the virtual path of the file Friendly URLs mapped this request to. </summary>
<returns>The file virtual path</returns>
<param name="httpRequest">The HttpRequest object.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.HttpRequestExtensions.GetFriendlyUrlFileVirtualPath(System.Web.HttpRequestBase)">
<summary> Returns the virtual path of the file Friendly URLs mapped this request to. </summary>
<returns>The file virtual path.</returns>
<param name="httpRequest">The HttpRequestBase object.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.HttpRequestExtensions.GetFriendlyUrlSegments(System.Web.HttpRequest)">
<summary> Returns the URL segments left over after Friendly URLs mapped this request to a file. </summary>
<returns>The URL segments.</returns>
<param name="httpRequest">The HttpRequest object.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.HttpRequestExtensions.GetFriendlyUrlSegments(System.Web.HttpRequestBase)">
<summary>Returns the URL segments left over after the current request has been mapped to a file.</summary>
<returns>The URL segments.</returns>
<param name="httpRequest">The HttpRequestBase object.</param>
</member>
<member name="T:Microsoft.AspNet.FriendlyUrls.PreApplicationStartCode"></member>
<member name="M:Microsoft.AspNet.FriendlyUrls.PreApplicationStartCode.Start"></member>
<member name="T:Microsoft.AspNet.FriendlyUrls.RedirectMode">
<summary>Represents the mode of redirect to use when auto-redirecting to friendly URLs.</summary>
</member>
<member name="F:Microsoft.AspNet.FriendlyUrls.RedirectMode.Permanent">
<summary>Performs a permanent redirect (301 response code).</summary>
</member>
<member name="F:Microsoft.AspNet.FriendlyUrls.RedirectMode.Temporary">
<summary>Performs a temporary redirect (302 response code).</summary>
</member>
<member name="F:Microsoft.AspNet.FriendlyUrls.RedirectMode.Off">
<summary>Performs no auto-redirect (disabled).</summary>
</member>
<member name="T:Microsoft.AspNet.FriendlyUrls.ResolverCachingMode">
<summary>Represents the mode of caching to use when resolving URLs. This setting affects how quickly extension-less URLs can be mapped back to their corresponding full URLs.</summary>
</member>
<member name="F:Microsoft.AspNet.FriendlyUrls.ResolverCachingMode.Static">
<summary>Build a list of files at application startup. This mode of operation is appropriate for sites where files are not added or removed at runtime.</summary>
</member>
<member name="F:Microsoft.AspNet.FriendlyUrls.ResolverCachingMode.Dynamic">
<summary>Builds a list of files as requests arrive, and updates the file list as files in the site change. This mode of operation uses more memory than a static cache, but is useful for updating the file list for sites where files or directories are added or removed at runtime.</summary>
</member>
<member name="F:Microsoft.AspNet.FriendlyUrls.ResolverCachingMode.Disabled">
<summary>Don't perform any caching. Always query the file system directly every time a request to a friendly URL comes in.</summary>
</member>
<member name="T:Microsoft.AspNet.FriendlyUrls.RouteCollectionExtensions"></member>
<member name="M:Microsoft.AspNet.FriendlyUrls.RouteCollectionExtensions.EnableFriendlyUrls(System.Web.Routing.RouteCollection)">
<summary> Enables friendly URLs for Web Forms pages. </summary>
<param name="routes">The routes collection.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.RouteCollectionExtensions.EnableFriendlyUrls(System.Web.Routing.RouteCollection,Microsoft.AspNet.FriendlyUrls.FriendlyUrlSettings)">
<summary>Enables friendly URLs for Web Forms pages.</summary>
<param name="routes">The routes collection.</param>
<param name="settings">The settings to use when enabling Friendly Urls.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.RouteCollectionExtensions.EnableFriendlyUrls(System.Web.Routing.RouteCollection,Microsoft.AspNet.FriendlyUrls.FriendlyUrlSettings,Microsoft.AspNet.FriendlyUrls.Resolvers.IFriendlyUrlResolver[])">
<summary> Enables friendly URLs using the passed resolvers. </summary>
<param name="routes">The routes collection.</param>
<param name="settings">The settings to use when enabling Friendly Urls.</param>
<param name="resolvers">The friendly URL resolvers to use.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.RouteCollectionExtensions.EnableFriendlyUrls(System.Web.Routing.RouteCollection,Microsoft.AspNet.FriendlyUrls.Resolvers.IFriendlyUrlResolver[])">
<summary> Enables friendly URLs using the specified resolvers. </summary>
<param name="routes">The routes collection.</param>
<param name="resolvers">The friendly URL resolvers to use.</param>
</member>
<member name="T:Microsoft.AspNet.FriendlyUrls.ModelBinding.FriendlyUrlSegmentsAttribute">
<summary>Represents an attribute that specifies that model binding values are provided by a friendly URL segment.</summary>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.ModelBinding.FriendlyUrlSegmentsAttribute.#ctor(System.Int32)">
<summary> Creates an instance of the FriendlyUrlSegmentsAttribute class.</summary>
<param name="index">The index of the URL segment to return.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.ModelBinding.FriendlyUrlSegmentsAttribute.GetValueProvider(System.Web.ModelBinding.ModelBindingExecutionContext)">
<returns>Returns <see cref="T:System.Web.ModelBinding.IValueProvider" />.</returns>
</member>
<member name="T:Microsoft.AspNet.FriendlyUrls.ModelBinding.FriendlyUrlSegmentsValueProvider">
<summary> A value provider that retrieves values from the segments of a Friendly URL.</summary>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.ModelBinding.FriendlyUrlSegmentsValueProvider.#ctor(System.Web.ModelBinding.ModelBindingExecutionContext,System.Int32)"></member>
<member name="M:Microsoft.AspNet.FriendlyUrls.ModelBinding.FriendlyUrlSegmentsValueProvider.FetchValue(System.String)">
<returns>Returns <see cref="T:System.Object" />.</returns>
</member>
<member name="T:Microsoft.AspNet.FriendlyUrls.Resolvers.FriendlyUrlResolver">
<summary>Resolves a friendly URL to an HTTP handler.</summary>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.FriendlyUrlResolver.#ctor(System.String)">
<summary>Creates a FriendlyUrlResolver for the provided extension.</summary>
<param name="fileExtension">The physical file extension understood by this resolver. Must include the leading period, e.g. ".aspx".</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.FriendlyUrlResolver.ConvertToFriendlyUrl(System.String)">
<summary>Converts a typical URL with a file extension into a friendly extension-less URL.</summary>
<returns>The friendly URL (extension stripped) if this resolver can automatically map extensionless URLs to physical files with the provided extension. Otherwise, null.</returns>
<param name="path">The original path, including the file extension.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.FriendlyUrlResolver.GetExtensions(System.Web.HttpContextBase)">
<summary>Gets the extensions to use (such as .aspx, .ashx, or .mobile.aspx) while attempting to resolve an HTTP handler from the friendly URL.</summary>
<returns>The list of extensions.</returns>
<param name="httpContext">The current HttpContext.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.FriendlyUrlResolver.PreprocessRequest(System.Web.HttpContextBase,System.Web.IHttpHandler)">
<summary>Called after a friendly URL is resolved to an HTTP handler but before the handler is executed.</summary>
<param name="httpContext">The current HttpContext.</param>
<param name="httpHandler">The HTTP handler.</param>
</member>
<member name="T:Microsoft.AspNet.FriendlyUrls.Resolvers.GenericHandlerFriendlyUrlResolver">
<summary>Resolves friendly URLs to generic handlers such as *.ashx.</summary>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.GenericHandlerFriendlyUrlResolver.#ctor"></member>
<member name="T:Microsoft.AspNet.FriendlyUrls.Resolvers.IFriendlyUrlResolver"></member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.IFriendlyUrlResolver.ConvertToFriendlyUrl(System.String)">
<summary>Converts a typical URL with a file extension into a friendly extension-less URL.</summary>
<returns>The friendly extension-less URL if this resolver can automaticallymap extensionless URLs to physical files with the provided extension. Otherwise, null.</returns>
<param name="path">The original path, including the file extension.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.IFriendlyUrlResolver.GetExtensions(System.Web.HttpContextBase)">
<summary>Returns a list of file extensions that the Friendly URLs system will try to resolve for the current request. For example, if the current request is for "~/example" and the GetExtensions method returns [ ".mobile.aspx", ".aspx", ".en-us.aspx" ], then the Friendly URLs system will attempt to match the current request to thefiles "~/example.mobile.aspx", "~/example.aspx", and "~/example.en-us.aspx", returning the first match.</summary>
<returns>A list of extensions that the system should try to resolve.</returns>
<param name="httpContext">The current request.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.IFriendlyUrlResolver.PreprocessRequest(System.Web.HttpContextBase,System.Web.IHttpHandler)">
<summary>Provides the ability to inspect or modify the IHttpHandler that was resolved for the current request before the handler's ProcessRequest method is called.</summary>
<param name="httpContext">Information about the current request.</param>
<param name="httpHandler">The handler that will be invoked.</param>
</member>
<member name="T:Microsoft.AspNet.FriendlyUrls.Resolvers.WebFormsFriendlyUrlResolver">
<summary>Resolves friendly URLs to Web Forms pages.</summary>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.WebFormsFriendlyUrlResolver.#ctor"></member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.WebFormsFriendlyUrlResolver.GetExtensions(System.Web.HttpContextBase)">
<returns>Returns <see cref="T:System.Collections.Generic.IList`1" />.</returns>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.WebFormsFriendlyUrlResolver.IsMobileExtension(System.Web.HttpContextBase,System.String)">
<returns>Returns <see cref="T:System.Boolean" />.</returns>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.WebFormsFriendlyUrlResolver.IsMobileView(System.Web.HttpContextBase)">
<summary>Determines if the current friendly URL was resolved to a mobile view based on the client browser and/or overrides.</summary>
<returns>Whether the current view is a mobile view.</returns>
<param name="httpContext">The page.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.WebFormsFriendlyUrlResolver.PreprocessRequest(System.Web.HttpContextBase,System.Web.IHttpHandler)"></member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.WebFormsFriendlyUrlResolver.TrySetMasterPageFile(System.Web.UI.Page,System.String)">
<summary>Attempts to set the MasterPageFile property for the given page based on whether the master page exists.</summary>
<returns>A boolean value indicating whether the master page was set.</returns>
<param name="page">The page.</param>
<param name="masterPageFile">The master page file virtual path.</param>
</member>
<member name="M:Microsoft.AspNet.FriendlyUrls.Resolvers.WebFormsFriendlyUrlResolver.TrySetMobileMasterPage(System.Web.HttpContextBase,System.Web.UI.Page,System.String)">
<summary>Attempts to set the MasterPageFile property for the given page to a mobile specific master page.</summary>
<returns>A boolean value indicating whether the master page was set.</returns>
<param name="httpContext">The HTTP context.</param>
<param name="page">The page.</param>
</member>
<member name="F:Microsoft.AspNet.FriendlyUrls.Resolvers.WebFormsFriendlyUrlResolver.ViewSwitcherCookieName"></member>
</members>
</doc>

Binary file not shown.

View File

@@ -0,0 +1,67 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.CodeDom.Providers.DotNetCompilerPlatform</name>
</assembly>
<members>
<member name="T:Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider">
<summary>
Provides access to instances of the .NET Compiler Platform C# code generator and code compiler.
</summary>
</member>
<member name="M:Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider.#ctor">
<summary>
Default Constructor
</summary>
</member>
<member name="M:Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider.#ctor(Microsoft.CodeDom.Providers.DotNetCompilerPlatform.ICompilerSettings)">
<summary>
Creates an instance using the given ICompilerSettings
</summary>
<param name="compilerSettings"></param>
</member>
<member name="M:Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider.CreateCompiler">
<summary>
Gets an instance of the .NET Compiler Platform C# code compiler.
</summary>
<returns>An instance of the .NET Compiler Platform C# code compiler</returns>
</member>
<member name="T:Microsoft.CodeDom.Providers.DotNetCompilerPlatform.ICompilerSettings">
<summary>
Provides settings for the C# and VB CodeProviders
</summary>
</member>
<member name="P:Microsoft.CodeDom.Providers.DotNetCompilerPlatform.ICompilerSettings.CompilerFullPath">
<summary>
The full path to csc.exe or vbc.exe
</summary>
</member>
<member name="P:Microsoft.CodeDom.Providers.DotNetCompilerPlatform.ICompilerSettings.CompilerServerTimeToLive">
<summary>
TTL in seconds
</summary>
</member>
<member name="T:Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider">
<summary>
Provides access to instances of the .NET Compiler Platform VB code generator and code compiler.
</summary>
</member>
<member name="M:Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider.#ctor">
<summary>
Default Constructor
</summary>
</member>
<member name="M:Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider.#ctor(Microsoft.CodeDom.Providers.DotNetCompilerPlatform.ICompilerSettings)">
<summary>
Creates an instance using the given ICompilerSettings
</summary>
<param name="compilerSettings"></param>
</member>
<member name="M:Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider.CreateCompiler">
<summary>
Gets an instance of the .NET Compiler Platform VB code compiler.
</summary>
<returns>An instance of the .NET Compiler Platform VB code compiler</returns>
</member>
</members>
</doc>

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
api/bin/Newtonsoft.Json.dll Normal file

Binary file not shown.

11172
api/bin/Newtonsoft.Json.xml Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

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