migrate to new git

This commit is contained in:
2025-08-29 01:27:25 +08:00
parent 946eb9961e
commit af2c152ef6
8623 changed files with 1000453 additions and 1 deletions

View File

@@ -0,0 +1,82 @@
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="admin_Templates_TBS5ADM001_MasterPage" %>
<%@ Register Src="~/admin/Templates/TBS5ADM001/uc/nav.ascx" TagPrefix="uc1" TagName="nav" %>
<%@ Register Src="~/admin/Templates/TBS5ADM001/uc/footer.ascx" TagPrefix="uc1" TagName="footer" %>
<%@ Register Src="~/admin/Templates/TBS5ADM001/uc/menu.ascx" TagPrefix="uc1" TagName="menu" %>
<!DOCTYPE html>
<html lang="zh-TW">
<head runat="server">
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="" />
<meta name="author" content="" />
<title><%= Page.Title %></title>
<%--
<%: Styles.Render("~/bundles/css") %>
<link href="~/css/bundle.css" rel="stylesheet" />
--%>
<link href="~/js/bootstrap5/bootstrap.min.css" rel="stylesheet" />
<%--<link href="~/js/fontawesome6/css/all.css" rel="stylesheet" />--%>
<link href="~/js/mdi-font/css/materialdesignicons.min.css" rel="stylesheet" />
<link href="~/js/vuetify_ez.css" rel="stylesheet" />
<link href="~/js/sweetalert2/sweetalert2.min.css" rel="stylesheet" />
<link href="~/admin/Templates/TBS5ADM001/css/Style.css" rel="stylesheet" />
<asp:ContentPlaceHolder id="page_header" runat="server">
</asp:ContentPlaceHolder>
</head>
<body id="PageBody" class="" runat="server">
<form id="form1" runat="server">
<%-- ScriptManager 必需移除 --%>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div id="app">
<v-app>
<uc1:nav runat="server" ID="nav"/>
<div id="layoutSidenav" class="">
<div id="layoutSidenav_nav" class="shadow" runat="server" ClientIDMode="static">
<uc1:menu runat="server" id="menu" />
</div>
<div id="layoutSidenav_content" class="bg-light" runat="server" ClientIDMode="static">
<main>
<nav class="page-nav navbar bg-white navbar-light px-2 mb-2 border-bottom"
><asp:ContentPlaceHolder id="page_nav" runat="server"></asp:ContentPlaceHolder></nav>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</main>
<uc1:footer runat="server" ID="footer" />
</div>
</div>
<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasRight" aria-labelledby="offcanvasRightLabel">
<div class="offcanvas-header shadow">
<h5 id="offcanvasRightLabel">查詢</h5>
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<asp:ContentPlaceHolder id="offCanvasRight" runat="server">
</asp:ContentPlaceHolder>
</div>
</div>
</v-app>
</div>
<%--
<%:Scripts.Render("~/bundles/js") %>
<script src="<%=ResolveClientUrl("~/js/bundle.js")%>"></script>
--%>
<script>
let HTTP_HOST = "<%=UrlHost()%>";
</script>
<script src="<%=ResolveUrl("~/js/bootstrap5/js/bootstrap.bundle.min.js")%>"></script>
<script src="<%=ResolveUrl("~/js/jquery-3.6.0.min.js")%>"></script>
<script src="<%=ResolveUrl("~/js/vue.min.js")%>"></script>
<script src="<%=ResolveUrl("~/js/vuetify.min.js")%>"></script>
<script src="<%=ResolveUrl("~/js/axios.min.js")%>"></script>
<script src="<%=ResolveUrl("~/js/moment.min.js")%>"></script>
<script src="<%=ResolveUrl("~/js/sweetalert2/sweetalert2.all.min.js") %>"></script>
<script src="<%=ResolveUrl("~/admin/Templates/TBS5ADM001/js/Script.js")%>"></script>
<asp:ContentPlaceHolder id="footer_script" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
</html>

View File

@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class admin_Templates_TBS5ADM001_MasterPage : MyWeb.master
{
protected void Page_Load(object sender, EventArgs e)
{
MasterLoad();
}
public void set_navs(bool visible=true, string body_class="")
{
this.nav.Visible = visible;
this.layoutSidenav_nav.Visible = visible;
this.PageBody.Attributes["class"] += " "+ body_class;
}
/* From MyWeb.config*/
public static bool IsHttps()
{
return HttpContext.Current.Request.IsSecureConnection;
}
public static string UrlHost()
{
string url = (IsHttps() ? "https://" : "http://")
//+ HttpContext.Current.Request.Url.Host
+ HttpContext.Current.Request.ServerVariables["HTTP_HOST"]
+ VirtualPathUtility.ToAbsolute("~/");
return url;
}
}

View File

@@ -0,0 +1,675 @@
html, body {
/* height: 100%*/
overflow:hidden;
}
#layoutAuthentication {
display: flex;
flex-direction: column;
min-height: 100vh
}
#layoutAuthentication #layoutAuthentication_content {
min-width: 0;
flex-grow: 1
}
#layoutAuthentication #layoutAuthentication_footer {
min-width: 0
}
#layoutSidenav {
display: flex;
}
#layoutSidenav #layoutSidenav_nav .sb-sidenav .sb-sidenav-menu .nav .nav-link {
padding:0.25rem 0.75rem;
}
#layoutSidenav #layoutSidenav_nav {
flex-basis: 225px;
flex-shrink: 0;
transition: transform .15s ease-in-out;
z-index: 1038;
transform: translateX(-225px)
}
@media (max-width:991px){
#layoutSidenav #layoutSidenav_nav{
box-shadow:none !important;
}
}
#layoutSidenav #layoutSidenav_content {
position: relative;
display: flex;
flex-direction: column;
justify-content: space-between;
min-width: 0;
flex-grow: 1;
min-height: calc(100vh - 56px);
margin-left: -225px
}
#layoutSidenav,
#layoutSidenav_nav,
#layoutSidenav_content {
max-height: calc(100vh - 3.5rem);
overflow-y: auto;
}
#layoutSidenav_nav > .sb-sidenav {
min-height: 100%;
height: auto;
}
#layoutSidenav_nav > .sb-sidenav {
min-height: 100%;
height: auto;
}
#layoutSidenav_nav::-webkit-scrollbar {
height: 0.5rem;
width: 0.5rem;
background: #EEE;
}
#layoutSidenav_nav::-webkit-scrollbar-thumb {
background: #CCC;
border-radius: 1ex;
border: 2px solid transparent;
background-clip: content-box;
}
#layoutSidenav_nav::-webkit-scrollbar-thumb:hover {
background: #AAA;
border: 0 solid transparent;
}
#layoutSidenav_nav::-webkit-scrollbar-button {
width: 0.5rem;
height: 0.5rem;
background-color: #EEE;
}
#layoutSidenav_nav::-webkit-scrollbar-button:hover {
background-color: #AAA;
}
#layoutSidenav_nav::-webkit-scrollbar-corner {
}
.sb-sidenav-toggled #layoutSidenav #layoutSidenav_nav {
transform: translateX(0)
}
.sb-sidenav-toggled #layoutSidenav #layoutSidenav_content:before {
content: "";
display: block;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
z-index: 1037;
opacity: .5;
transition: opacity .3s ease-in-out
}
@media(min-width:992px) {
#layoutSidenav #layoutSidenav_nav {
transform: translateX(0)
}
#layoutSidenav #layoutSidenav_content {
margin-left: 0;
transition: margin .15s ease-in-out
}
.sb-sidenav-toggled #layoutSidenav #layoutSidenav_nav {
transform: translateX(-225px)
}
.sb-sidenav-toggled #layoutSidenav #layoutSidenav_content {
margin-left: -225px
}
.sb-sidenav-toggled #layoutSidenav #layoutSidenav_content:before {
display: none
}
}
.sb-nav-fixed .sb-topnav {
z-index: 1039
}
.sb-nav-fixed #layoutSidenav #layoutSidenav_nav {
width: 225px;
height: 100vh;
z-index: 1038
}
.sb-nav-fixed #layoutSidenav #layoutSidenav_nav .sb-sidenav {
padding-top: 56px
}
.sb-nav-fixed #layoutSidenav #layoutSidenav_nav .sb-sidenav .sb-sidenav-menu {
overflow-y: auto
}
.sb-nav-fixed #layoutSidenav #layoutSidenav_content {
padding-left: 225px;
top: 56px
}
#layoutError {
display: flex;
flex-direction: column;
min-height: 100vh
}
#layoutError #layoutError_content {
min-width: 0;
flex-grow: 1
}
#layoutError #layoutError_footer {
min-width: 0
}
.img-error {
max-width: 20rem
}
.nav .nav-link .sb-nav-link-icon, .sb-sidenav-menu .nav-link .sb-nav-link-icon {
margin-right: .5rem
}
.sb-topnav {
padding-left: 0;
height: 3.5rem; /*56px;*/
z-index: 100;/*1039*/
}
.sb-topnav .navbar-brand {
}
.sb-topnav .breadcrumb {
margin:0;
}
.sb-topnav .breadcrumb li{
color: var(--bs-light);
}
.sb-topnav .breadcrumb li.active {
color: var(--bs-white);
}
.sb-topnav .breadcrumb a {
color: var(--bs-light);
}
.sb-topnav.navbar-dark #sidebarToggle {
color: rgba(255,255,255,.5)
}
.sb-topnav.navbar-light #sidebarToggle {
color: #212529
}
.sb-sidenav {
display: flex;
flex-direction: column;
height: 100%;
flex-wrap: nowrap
}
.sb-sidenav .sb-sidenav-menu {
flex-grow: 1
}
.sb-sidenav .sb-sidenav-menu .nav {
flex-direction: column;
flex-wrap: nowrap
}
.sb-sidenav .sb-sidenav-menu .nav .sb-sidenav-menu-heading {
padding: 1.75rem 1rem .75rem;
font-size: .75rem;
font-weight: bold;
text-transform: uppercase
}
.sb-sidenav .sb-sidenav-menu .nav .nav-link {
display: flex;
align-items: center;
padding-top: .75rem;
padding-bottom: .75rem;
position: relative
}
.sb-sidenav .sb-sidenav-menu .nav .nav-link .sb-nav-link-icon {
font-size: .9rem
}
.sb-sidenav .sb-sidenav-menu .nav .nav-link .sb-sidenav-collapse-arrow {
display: inline-block;
margin-left: auto;
transition: transform .15s ease
}
.sb-sidenav .sb-sidenav-menu .nav .nav-link.collapsed .sb-sidenav-collapse-arrow {
transform: rotate(-90deg)
}
.sb-sidenav .sb-sidenav-menu .nav .sb-sidenav-menu-nested {
margin-left: 1.5rem;
flex-direction: column
}
.sb-sidenav .sb-sidenav-footer {
padding: .75rem;
flex-shrink: 0
}
.sb-sidenav-dark {
background-color: #212529;
color: rgba(255,255,255,.5)
}
.sb-sidenav-dark .sb-sidenav-menu .sb-sidenav-menu-heading {
color: rgba(255,255,255,.25)
}
.sb-sidenav-dark .sb-sidenav-menu .nav-link {
color: rgba(255,255,255,.5)
}
.sb-sidenav-dark .sb-sidenav-menu .nav-link .sb-nav-link-icon {
color: rgba(255,255,255,.25)
}
.sb-sidenav-dark .sb-sidenav-menu .nav-link .sb-sidenav-collapse-arrow {
color: rgba(255,255,255,.25)
}
.sb-sidenav-dark .sb-sidenav-menu .nav-link:hover {
color: #fff
}
.sb-sidenav-dark .sb-sidenav-menu .nav-link.active {
color: #fff
}
.sb-sidenav-dark .sb-sidenav-menu .nav-link.active .sb-nav-link-icon {
color: #fff
}
.sb-sidenav-dark .sb-sidenav-footer {
background-color: #343a40
}
.sb-sidenav-light {
background-color: #f8f9fa;
color: #212529
}
.sb-sidenav-light .sb-sidenav-menu .sb-sidenav-menu-heading {
color: #adb5bd
}
.sb-sidenav-light .sb-sidenav-menu .nav-link {
color: #212529
}
.sb-sidenav-light .sb-sidenav-menu .nav-link .sb-nav-link-icon {
color: #adb5bd
}
.sb-sidenav-light .sb-sidenav-menu .nav-link .sb-sidenav-collapse-arrow {
color: #adb5bd
}
.sb-sidenav-light .sb-sidenav-menu .nav-link:hover {
color: #0d6efd
}
.sb-sidenav-light .sb-sidenav-menu .nav-link.active {
color: #0d6efd
}
.sb-sidenav-light .sb-sidenav-menu .nav-link.active .sb-nav-link-icon {
color: #0d6efd
}
.sb-sidenav-light .sb-sidenav-footer {
background-color: #e9ecef
}
.dataTable-wrapper .dataTable-container {
font-size: .875rem
}
.btn-datatable {
height: 20px !important;
width: 20px !important;
font-size: .75rem;
border-radius: .25rem !important
}
.btn.rounded-circle {
padding: 0;
width: 2em;
height: 2em;
line-height: 2;
}
body.nav_hide #layoutSidenav {
min-height: 100vh;
margin: 0;
}
body.nav_hide #layoutSidenav #layoutSidenav_content {
min-height: 100vh;
margin: 0;
}
body.nav_hide .row.recaptcha {
align-items: center;
}
body.nav_hide .validation-msg {
position: absolute;
top: 0;
right: 0;
padding: 0.5rem;
color: var(--bs-red) !important;
}
#offcanvasRightLabel {
margin: 0;
}
#offcanvasRight .offcanvas-body>div {
display:none;
}
#search_btn{
display:none;
}
body.home {
/*background-image: url(../images/bg2.jpg);*/
background-size: cover;
background-blend-mode: unset;
}
body.home .card {
background-color: rgba(255,255,255,0.25);
backdrop-filter: blur(50px);
}
body.home footer{
position:fixed;
bottom:0;
left:0;
right:0;
opacity: 0.5;
}
/* .bg-ani */
body.home {
/*body .home, :root {*/
--bg-ani-image: url(../images/bg2.jpg);
--bg-ani-zoom: 0.2;
--bg-ani-duration: 30s;
--bg-ani-transition: 5s;
}
body.home .bg-ani > svg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
color:rgb(102,58,34,.4);
}
.bg-ani {
overflow: hidden;
text-align: center;
position: fixed;
top: 0;
bottom: -3rem;
left: 0;
right: 0;
/*z-index: -1;*/
}
.bg-ani .zoominheader {
width: 100%;
height: 100%;
background-image: var(--bg-ani-image);
background-size: cover;
background-attachment: fixed;
background-repeat: repeat;
background-blend-mode: unset;
position: relative;
animation: zoomin var(--bg-ani-duration) ease-in infinite;
transition: all var(--bg-ani-transition) ease-in-out;
overflow: hidden;
}
.bg-ani .zoomoutheader {
width: 100%;
height: 100%;
animation: zoomout var(--bg-ani-duration) ease-in infinite;
transition: all var(--bg-ani-transition) ease-in-out;
overflow: hidden;
}
@keyframes zoomin {
0% {
transform: scale(1);
}
50% {
transform: scale(calc(1 + var(--bg-ani-zoom)));
}
100% {
transform: scale(1);
}
}
@keyframes zoomout {
0% {
transform: scale(1);
}
50% {
transform: scale(calc(1 - var(--bg-ani-zoom)));
}
100% {
transform: scale(1);
}
}
/* /.bg-ani */
.btn-default {
color: #333333;
background-color: #ffffff;
border-color: #cccccc;
}
/* alert */
main .alert {
position: sticky;
top: 0;
z-index: 99;
}
main .page-nav {
position: sticky;
top: 0;
z-index: 99;
}
/* bootstrap-toggle */
main .checkbox label .toggle, main .checkbox-inline .toggle {
margin-left: 0;
}
main .toggle-group label{
font-size:.875rem;
}
html, body, #layoutSidenav, #layoutSidenav_nav, #layoutSidenav_content {
scroll-behavior: smooth;
}
#sidebarToggle {
font-size: 1.2rem;
border-radius: 37% !important;
color: rgba(255,255,255,0.75) !important;
}
.page-nav ~ #content [id]{
scroll-margin: 60px !important;
}
.page-nav:empty{
display:none;
}
.aspxTree a{
color: var(--bs-dark);
}
.aspxTree img{
width:12px;
opacity:0.6;
margin-top:-4px;
margin-right:4px;
}
.aspxTree>div img{
/*display:none;*/
visibility:hidden;
}
.aspxTree a > b > * {
color: var(--bs-primary) !important;
}
.sort-iframe{
width:100%;
min-height:500px;
overflow:auto;
}
.label-right .col-form-label{
text-align:right;
}
.col-form-label::after{
/*content:":";*/
}
@media (min-width:576px) {
.label-sm-right .col-form-label {
text-align: right;
}
}
@media (min-width:768px) {
.label-md-right .col-form-label {
text-align: right;
}
}
@media (min-width:992px) {
.label-lg-right .col-form-label {
text-align: right;
}
}
@media (min-width:1200px) {
.label-xl-right .col-form-label {
text-align: right;
}
}
@media (min-width:1400px) {
.label-xl-right .col-form-label {
text-align: right;
}
}
/*------------ theme: win11 ------------*/
.sb-topnav {
background-color: #006FC9 !important;
}
.sb-topnav.navbar-dark #sidebarToggle:hover {
background-color: rgba(255,255,255,0.3) !important;
}
.breadcrumb-item + .breadcrumb-item::before {
color: var(--bs-light);
}
.sb-sidenav-light .sb-sidenav-menu .nav-link.active .sb-nav-link-icon,
.sb-sidenav-light .sb-sidenav-menu .nav-link.active {
color: var(--bs-primary);
}
.sb-sidenav-light {
background-color: #FFF;
}
#layoutSidenav #layoutSidenav_content {
background-color: rgb(242, 242, 242) !important;
}
.card {
border: 0 none;
box-shadow: rgb(0 0 0 / 13%) 0px 1.6px 3.6px 0px, rgb(0 0 0 / 11%) 0px 0.3px 0.9px 0px !important;
}
.card-header {
background-color: transparent;
}
.card-header:hover {
background-color: rgba(0,0,0,.03);
}
.nav-tabs .nav-link {
border: 0 none;
color: var(--bs-dark);
position: relative;
}
.nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link:hover {
/*outline: 1px solid rgb(0 0 0 / 10%);*/
border-bottom: 1px solid var(--bs-blue);
padding-bottom: calc( 0.5rem - 1px);
color: var(--bs-blue);
z-index: 9;
}
.nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link.active {
background-color: #FFF;
border-bottom: 2px solid var(--bs-blue);
padding-bottom: calc( 0.5rem - 1px);
}
.dropdown-menu-macos {
padding: .5rem;
border-radius: .5rem;
}
.dropdown-menu-macos .dropdown-item {
border-radius: .25rem;
}
table.gridview {
}
table.gridview .thead {
}
table.gridview .thead a {
text-decoration: none;
}
table.gridview .thead a:hover {
text-decoration: underline;
text-underline-offset: 2px;
}
table.gridview tr:last-of-type:hover,
table.gridview tr:last-of-type:hover td {
--bs-table-accent-bg: var(--bs-white);
}
table.gridview td input[type=checkbox] {
border-radius: 0.25em;
width: 1em;
height: 1em;
border: 1px solid rgba(0,0,0,.25);
}
/*------------ theme: win11 ------------*/
[data-search-control] .form-control[readonly] {
background-color:#FFF;
}
/*--vuetify fix--*/
.v-application--wrap {
min-height: auto !important;
}
html {
overflow-x: auto !important;
overflow-y: auto !important;
}
.v-application .primary {
background-color: #1976d2 !important;
border-color: #1976d2 !important;
}
.readonly {
pointer-events: none;
}
.text-white-space-pre{
white-space:pre;
}

View File

@@ -0,0 +1,703 @@
.v-application a {
color: #1976d2;
}
.v-application .primary {
background-color: #1976d2 !important;
border-color: #1976d2 !important;
}
.v-application .primary--text {
color: #1976d2 !important;
caret-color: #1976d2 !important;
}
.v-application .primary.lighten-5 {
background-color: #c7fdff !important;
border-color: #c7fdff !important;
}
.v-application .primary--text.text--lighten-5 {
color: #c7fdff !important;
caret-color: #c7fdff !important;
}
.v-application .primary.lighten-4 {
background-color: #a8e0ff !important;
border-color: #a8e0ff !important;
}
.v-application .primary--text.text--lighten-4 {
color: #a8e0ff !important;
caret-color: #a8e0ff !important;
}
.v-application .primary.lighten-3 {
background-color: #8ac5ff !important;
border-color: #8ac5ff !important;
}
.v-application .primary--text.text--lighten-3 {
color: #8ac5ff !important;
caret-color: #8ac5ff !important;
}
.v-application .primary.lighten-2 {
background-color: #6aaaff !important;
border-color: #6aaaff !important;
}
.v-application .primary--text.text--lighten-2 {
color: #6aaaff !important;
caret-color: #6aaaff !important;
}
.v-application .primary.lighten-1 {
background-color: #488fef !important;
border-color: #488fef !important;
}
.v-application .primary--text.text--lighten-1 {
color: #488fef !important;
caret-color: #488fef !important;
}
.v-application .primary.darken-1 {
background-color: #005eb6 !important;
border-color: #005eb6 !important;
}
.v-application .primary--text.text--darken-1 {
color: #005eb6 !important;
caret-color: #005eb6 !important;
}
.v-application .primary.darken-2 {
background-color: #00479b !important;
border-color: #00479b !important;
}
.v-application .primary--text.text--darken-2 {
color: #00479b !important;
caret-color: #00479b !important;
}
.v-application .primary.darken-3 {
background-color: #003180 !important;
border-color: #003180 !important;
}
.v-application .primary--text.text--darken-3 {
color: #003180 !important;
caret-color: #003180 !important;
}
.v-application .primary.darken-4 {
background-color: #001e67 !important;
border-color: #001e67 !important;
}
.v-application .primary--text.text--darken-4 {
color: #001e67 !important;
caret-color: #001e67 !important;
}
.v-application .secondary {
background-color: #424242 !important;
border-color: #424242 !important;
}
.v-application .secondary--text {
color: #424242 !important;
caret-color: #424242 !important;
}
.v-application .secondary.lighten-5 {
background-color: #c1c1c1 !important;
border-color: #c1c1c1 !important;
}
.v-application .secondary--text.text--lighten-5 {
color: #c1c1c1 !important;
caret-color: #c1c1c1 !important;
}
.v-application .secondary.lighten-4 {
background-color: #a6a6a6 !important;
border-color: #a6a6a6 !important;
}
.v-application .secondary--text.text--lighten-4 {
color: #a6a6a6 !important;
caret-color: #a6a6a6 !important;
}
.v-application .secondary.lighten-3 {
background-color: #8b8b8b !important;
border-color: #8b8b8b !important;
}
.v-application .secondary--text.text--lighten-3 {
color: #8b8b8b !important;
caret-color: #8b8b8b !important;
}
.v-application .secondary.lighten-2 {
background-color: #727272 !important;
border-color: #727272 !important;
}
.v-application .secondary--text.text--lighten-2 {
color: #727272 !important;
caret-color: #727272 !important;
}
.v-application .secondary.lighten-1 {
background-color: #595959 !important;
border-color: #595959 !important;
}
.v-application .secondary--text.text--lighten-1 {
color: #595959 !important;
caret-color: #595959 !important;
}
.v-application .secondary.darken-1 {
background-color: #2c2c2c !important;
border-color: #2c2c2c !important;
}
.v-application .secondary--text.text--darken-1 {
color: #2c2c2c !important;
caret-color: #2c2c2c !important;
}
.v-application .secondary.darken-2 {
background-color: #171717 !important;
border-color: #171717 !important;
}
.v-application .secondary--text.text--darken-2 {
color: #171717 !important;
caret-color: #171717 !important;
}
.v-application .secondary.darken-3 {
background-color: #000000 !important;
border-color: #000000 !important;
}
.v-application .secondary--text.text--darken-3 {
color: #000000 !important;
caret-color: #000000 !important;
}
.v-application .secondary.darken-4 {
background-color: #000000 !important;
border-color: #000000 !important;
}
.v-application .secondary--text.text--darken-4 {
color: #000000 !important;
caret-color: #000000 !important;
}
.v-application .accent {
background-color: #82b1ff !important;
border-color: #82b1ff !important;
}
.v-application .accent--text {
color: #82b1ff !important;
caret-color: #82b1ff !important;
}
.v-application .accent.lighten-5 {
background-color: #ffffff !important;
border-color: #ffffff !important;
}
.v-application .accent--text.text--lighten-5 {
color: #ffffff !important;
caret-color: #ffffff !important;
}
.v-application .accent.lighten-4 {
background-color: #f8ffff !important;
border-color: #f8ffff !important;
}
.v-application .accent--text.text--lighten-4 {
color: #f8ffff !important;
caret-color: #f8ffff !important;
}
.v-application .accent.lighten-3 {
background-color: #daffff !important;
border-color: #daffff !important;
}
.v-application .accent--text.text--lighten-3 {
color: #daffff !important;
caret-color: #daffff !important;
}
.v-application .accent.lighten-2 {
background-color: #bce8ff !important;
border-color: #bce8ff !important;
}
.v-application .accent--text.text--lighten-2 {
color: #bce8ff !important;
caret-color: #bce8ff !important;
}
.v-application .accent.lighten-1 {
background-color: #9fccff !important;
border-color: #9fccff !important;
}
.v-application .accent--text.text--lighten-1 {
color: #9fccff !important;
caret-color: #9fccff !important;
}
.v-application .accent.darken-1 {
background-color: #6596e2 !important;
border-color: #6596e2 !important;
}
.v-application .accent--text.text--darken-1 {
color: #6596e2 !important;
caret-color: #6596e2 !important;
}
.v-application .accent.darken-2 {
background-color: #467dc6 !important;
border-color: #467dc6 !important;
}
.v-application .accent--text.text--darken-2 {
color: #467dc6 !important;
caret-color: #467dc6 !important;
}
.v-application .accent.darken-3 {
background-color: #2364aa !important;
border-color: #2364aa !important;
}
.v-application .accent--text.text--darken-3 {
color: #2364aa !important;
caret-color: #2364aa !important;
}
.v-application .accent.darken-4 {
background-color: #004c90 !important;
border-color: #004c90 !important;
}
.v-application .accent--text.text--darken-4 {
color: #004c90 !important;
caret-color: #004c90 !important;
}
.v-application .error {
background-color: #ff5252 !important;
border-color: #ff5252 !important;
}
.v-application .error--text {
color: #ff5252 !important;
caret-color: #ff5252 !important;
}
.v-application .error.lighten-5 {
background-color: #ffe4d5 !important;
border-color: #ffe4d5 !important;
}
.v-application .error--text.text--lighten-5 {
color: #ffe4d5 !important;
caret-color: #ffe4d5 !important;
}
.v-application .error.lighten-4 {
background-color: #ffc6b9 !important;
border-color: #ffc6b9 !important;
}
.v-application .error--text.text--lighten-4 {
color: #ffc6b9 !important;
caret-color: #ffc6b9 !important;
}
.v-application .error.lighten-3 {
background-color: #ffa99e !important;
border-color: #ffa99e !important;
}
.v-application .error--text.text--lighten-3 {
color: #ffa99e !important;
caret-color: #ffa99e !important;
}
.v-application .error.lighten-2 {
background-color: #ff8c84 !important;
border-color: #ff8c84 !important;
}
.v-application .error--text.text--lighten-2 {
color: #ff8c84 !important;
caret-color: #ff8c84 !important;
}
.v-application .error.lighten-1 {
background-color: #ff6f6a !important;
border-color: #ff6f6a !important;
}
.v-application .error--text.text--lighten-1 {
color: #ff6f6a !important;
caret-color: #ff6f6a !important;
}
.v-application .error.darken-1 {
background-color: #df323b !important;
border-color: #df323b !important;
}
.v-application .error--text.text--darken-1 {
color: #df323b !important;
caret-color: #df323b !important;
}
.v-application .error.darken-2 {
background-color: #bf0025 !important;
border-color: #bf0025 !important;
}
.v-application .error--text.text--darken-2 {
color: #bf0025 !important;
caret-color: #bf0025 !important;
}
.v-application .error.darken-3 {
background-color: #9f0010 !important;
border-color: #9f0010 !important;
}
.v-application .error--text.text--darken-3 {
color: #9f0010 !important;
caret-color: #9f0010 !important;
}
.v-application .error.darken-4 {
background-color: #800000 !important;
border-color: #800000 !important;
}
.v-application .error--text.text--darken-4 {
color: #800000 !important;
caret-color: #800000 !important;
}
.v-application .info {
background-color: #2196f3 !important;
border-color: #2196f3 !important;
}
.v-application .info--text {
color: #2196f3 !important;
caret-color: #2196f3 !important;
}
.v-application .info.lighten-5 {
background-color: #d4ffff !important;
border-color: #d4ffff !important;
}
.v-application .info--text.text--lighten-5 {
color: #d4ffff !important;
caret-color: #d4ffff !important;
}
.v-application .info.lighten-4 {
background-color: #b5ffff !important;
border-color: #b5ffff !important;
}
.v-application .info--text.text--lighten-4 {
color: #b5ffff !important;
caret-color: #b5ffff !important;
}
.v-application .info.lighten-3 {
background-color: #95e8ff !important;
border-color: #95e8ff !important;
}
.v-application .info--text.text--lighten-3 {
color: #95e8ff !important;
caret-color: #95e8ff !important;
}
.v-application .info.lighten-2 {
background-color: #75ccff !important;
border-color: #75ccff !important;
}
.v-application .info--text.text--lighten-2 {
color: #75ccff !important;
caret-color: #75ccff !important;
}
.v-application .info.lighten-1 {
background-color: #51b0ff !important;
border-color: #51b0ff !important;
}
.v-application .info--text.text--lighten-1 {
color: #51b0ff !important;
caret-color: #51b0ff !important;
}
.v-application .info.darken-1 {
background-color: #007cd6 !important;
border-color: #007cd6 !important;
}
.v-application .info--text.text--darken-1 {
color: #007cd6 !important;
caret-color: #007cd6 !important;
}
.v-application .info.darken-2 {
background-color: #0064ba !important;
border-color: #0064ba !important;
}
.v-application .info--text.text--darken-2 {
color: #0064ba !important;
caret-color: #0064ba !important;
}
.v-application .info.darken-3 {
background-color: #004d9f !important;
border-color: #004d9f !important;
}
.v-application .info--text.text--darken-3 {
color: #004d9f !important;
caret-color: #004d9f !important;
}
.v-application .info.darken-4 {
background-color: #003784 !important;
border-color: #003784 !important;
}
.v-application .info--text.text--darken-4 {
color: #003784 !important;
caret-color: #003784 !important;
}
.v-application .success {
background-color: #4caf50 !important;
border-color: #4caf50 !important;
}
.v-application .success--text {
color: #4caf50 !important;
caret-color: #4caf50 !important;
}
.v-application .success.lighten-5 {
background-color: #dcffd6 !important;
border-color: #dcffd6 !important;
}
.v-application .success--text.text--lighten-5 {
color: #dcffd6 !important;
caret-color: #dcffd6 !important;
}
.v-application .success.lighten-4 {
background-color: #beffba !important;
border-color: #beffba !important;
}
.v-application .success--text.text--lighten-4 {
color: #beffba !important;
caret-color: #beffba !important;
}
.v-application .success.lighten-3 {
background-color: #a2ff9e !important;
border-color: #a2ff9e !important;
}
.v-application .success--text.text--lighten-3 {
color: #a2ff9e !important;
caret-color: #a2ff9e !important;
}
.v-application .success.lighten-2 {
background-color: #85e783 !important;
border-color: #85e783 !important;
}
.v-application .success--text.text--lighten-2 {
color: #85e783 !important;
caret-color: #85e783 !important;
}
.v-application .success.lighten-1 {
background-color: #69cb69 !important;
border-color: #69cb69 !important;
}
.v-application .success--text.text--lighten-1 {
color: #69cb69 !important;
caret-color: #69cb69 !important;
}
.v-application .success.darken-1 {
background-color: #2d9437 !important;
border-color: #2d9437 !important;
}
.v-application .success--text.text--darken-1 {
color: #2d9437 !important;
caret-color: #2d9437 !important;
}
.v-application .success.darken-2 {
background-color: #00791e !important;
border-color: #00791e !important;
}
.v-application .success--text.text--darken-2 {
color: #00791e !important;
caret-color: #00791e !important;
}
.v-application .success.darken-3 {
background-color: #006000 !important;
border-color: #006000 !important;
}
.v-application .success--text.text--darken-3 {
color: #006000 !important;
caret-color: #006000 !important;
}
.v-application .success.darken-4 {
background-color: #004700 !important;
border-color: #004700 !important;
}
.v-application .success--text.text--darken-4 {
color: #004700 !important;
caret-color: #004700 !important;
}
.v-application .warning {
background-color: #fb8c00 !important;
border-color: #fb8c00 !important;
}
.v-application .warning--text {
color: #fb8c00 !important;
caret-color: #fb8c00 !important;
}
.v-application .warning.lighten-5 {
background-color: #ffff9e !important;
border-color: #ffff9e !important;
}
.v-application .warning--text.text--lighten-5 {
color: #ffff9e !important;
caret-color: #ffff9e !important;
}
.v-application .warning.lighten-4 {
background-color: #fffb82 !important;
border-color: #fffb82 !important;
}
.v-application .warning--text.text--lighten-4 {
color: #fffb82 !important;
caret-color: #fffb82 !important;
}
.v-application .warning.lighten-3 {
background-color: #ffdf67 !important;
border-color: #ffdf67 !important;
}
.v-application .warning--text.text--lighten-3 {
color: #ffdf67 !important;
caret-color: #ffdf67 !important;
}
.v-application .warning.lighten-2 {
background-color: #ffc24b !important;
border-color: #ffc24b !important;
}
.v-application .warning--text.text--lighten-2 {
color: #ffc24b !important;
caret-color: #ffc24b !important;
}
.v-application .warning.lighten-1 {
background-color: #ffa72d !important;
border-color: #ffa72d !important;
}
.v-application .warning--text.text--lighten-1 {
color: #ffa72d !important;
caret-color: #ffa72d !important;
}
.v-application .warning.darken-1 {
background-color: #db7200 !important;
border-color: #db7200 !important;
}
.v-application .warning--text.text--darken-1 {
color: #db7200 !important;
caret-color: #db7200 !important;
}
.v-application .warning.darken-2 {
background-color: #bb5900 !important;
border-color: #bb5900 !important;
}
.v-application .warning--text.text--darken-2 {
color: #bb5900 !important;
caret-color: #bb5900 !important;
}
.v-application .warning.darken-3 {
background-color: #9d4000 !important;
border-color: #9d4000 !important;
}
.v-application .warning--text.text--darken-3 {
color: #9d4000 !important;
caret-color: #9d4000 !important;
}
.v-application .warning.darken-4 {
background-color: #802700 !important;
border-color: #802700 !important;
}
.v-application .warning--text.text--darken-4 {
color: #802700 !important;
caret-color: #802700 !important;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 508 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 129 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 462 KiB

View File

@@ -0,0 +1,300 @@
// navigation and breadcrumb
window.addEventListener('DOMContentLoaded', event => {
// Toggle the side navigation
const sidebarToggle = document.body.querySelector('#sidebarToggle');
if (sidebarToggle) {
// Uncomment Below to persist sidebar toggle between refreshes
//if (localStorage.getItem('sb|sidebar-toggle') === 'true') {
// document.body.classList.toggle('sb-sidenav-toggled');
//}
sidebarToggle.addEventListener('click', event => {
event.preventDefault();
document.body.classList.toggle('sb-sidenav-toggled');
localStorage.setItem('sb|sidebar-toggle', document.body.classList.contains('sb-sidenav-toggled'));
});
}
});
$(document).ready(function () {
// navigation and breadcrumb
//$(".leaf-node").parents("tr").find("img").hide();
var breadcrumb_last = $(".breadcrumb li").last().text().trim();
var item = $("#sideNav_1 a.nav-link").filter((i, t) => {
//console.log($(t).text().trim(), breadcrumb_last, $(t).text().trim() == breadcrumb_last);
return $(t).text().trim() == breadcrumb_last;
});
var panel = item.parents(".collapse").eq(0);
item.addClass("active");
panel.toggle();
panel.prev().addClass("active");
$("a[data-bs-target='#offcanvasRight']").click(function (e) {
let t = $(this).attr("href");
console.log("right:", this, t);
$("#offcanvasRight .offcanvas-body>div").hide();
$(t).show();
$("#offcanvasRightLabel").text($(t).data("title"));
});
let show_search = !!$("#offcanvasRight .offcanvas-body #search_panel").length;
$("#search_btn").toggle(show_search);
// search-control
$("[data-search-control]").each((i, t) => {
console.log("[data-search-control]", i, t,
$(t).children("button").eq(0),
$(t).children("[type=hidden]").val(),
$(t).children(".search-text").attr("placeholder"),
$(t).children(".search-text").val(),
);
});
});
// Sweet Alert
function msgbox(html, icon = '', url = '') {
Swal.fire({
icon: icon,
html: html,
confirmButtonText: '關閉',
onClose: () => {
if (url != '') {
window.location = url;
}
}
});
}
function msgtop(html, icon = 'success') {
const Toast = Swal.mixin({
toast: true,
position: 'top-end',
showConfirmButton: false,
timer: 3000,
heightAuto: false,
timerProgressBar: true,
onOpen: (toast) => {
toast.addEventListener('mouseenter', Swal.stopTimer)
toast.addEventListener('mouseleave', Swal.resumeTimer)
}
})
Toast.fire({
icon: icon,
html: '<div class="swal2-toast-cus">' + html + '</div>'
})
}
var mctmp = '0';
function msgconfirm(html, btn, icon = 'question') {
if (mctmp == '0') {
Swal.fire({
html: html,
icon: icon,
showCancelButton: true,
confirmButtonText: '<i class="mdi mdi-check"></i> 確定',
cancelButtonText: '<i class="mdi mdi-close"></i> 取消'
}).then((result) => {
if (result.value) {
mctmp = '1';
if ($(btn)[0].hasAttribute('href')) {
var href = $(btn).attr('href');
window.location.href = href;
} else {
$(btn).click();
}
}
})
mctmp = '0';
return false;
} else {
mctmp = '0';
return true;
}
}
function clearObjProps(obj) {
for (const prop of Object.getOwnPropertyNames(obj)) {
obj[prop] = null;
}
}
//---------------------------------列印---------------------------------------------------
function PrintTagData(id) {
if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) {
window.print();
} else {
var Item = document.getElementById(id);
var printdetail = window.open("", "TextareaDetail");
printdetail.document.open();
printdetail.document.write("<HTML><head><link href=\"../../module/js/css/adminroot.css\" rel=\"stylesheet\" type=\"text/css\">");
printdetail.document.write("<script type =\"text/javascript\">");
printdetail.document.write("function mouseover(obj,color_word){obj.style.backgroundColor = color_word;}");
printdetail.document.write("function mouseout(obj,color_word){obj.style.backgroundColor = color_word;}");
printdetail.document.write("<\/script>");
printdetail.document.write("</head>");
printdetail.document.write("<BODY onload=\"window.print();\"><div style=\"width:720px\">");
printdetail.document.write(Item.outerHTML);
printdetail.document.write("</div></BODY></HTML>");
printdetail.document.close();
}
}
function PrintTagRWD(id) {
if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) {
window.print();
} else {
var Item = document.getElementById(id);
var printdetail = window.open("", "TextareaDetail");
printdetail.document.open();
printdetail.document.write("<HTML><head>\n");
printdetail.document.write('<link href="../../App_Script/bootstrap3/css/bootstrap.css" rel="stylesheet" />\n');
printdetail.document.write('<link href="../../App_Script/bootstrap_datepicker/css/datepicker.css" rel="stylesheet" />\n');
printdetail.document.write('<link href="../../admin/skin/css/style.css" rel="stylesheet" media="screen" />\n');
printdetail.document.write('<link href="../../admin/skin/css/print.css" rel="stylesheet" media="print" />\n');
printdetail.document.write('<!--[if lt IE 9]>\n');
printdetail.document.write('<link href="../../admin/skin/css/ie8-and-down.css" rel="stylesheet" type="text/css" />\n');
printdetail.document.write('<![endif]-->\n');
printdetail.document.write("<style type=\"text/css\">.hidden-print{display:none;}</style>");
printdetail.document.write("</head>");
printdetail.document.write("<BODY onload=\"window.print();\">");
printdetail.document.write(Item.outerHTML);
printdetail.document.write("</BODY></HTML>");
printdetail.document.close();
}
}
//---------------------------------checkbox全選用---------------------------------------------------
function Check(parentChk, ChildId) {
var oElements = document.getElementsByTagName("INPUT");
var bIsChecked = parentChk.checked;
for (i = 0; i < oElements.length; i++) {
if (IsCheckBox(oElements[i]) &&
IsMatch(oElements[i].id, ChildId)) {
oElements[i].checked = bIsChecked;
}
}
}
function IsMatch(id, ChildId) {
var sPattern = '^ctl00_ContentPlaceHolder1_Repeater1.*' + ChildId + '$';
var oRegExp = new RegExp(sPattern);
if (oRegExp.exec(id))
return true;
else
return false;
}
function IsCheckBox(chk) {
if (chk.type == 'checkbox') return true;
else return false;
}
function checkListAll(chk) {
$('.listCheck input').each(function () {
this.checked = chk;
});
}
function checkAll2(chk, num) {
$('#root_' + num).show();
$('#root_' + num + ' input:checkbox').each(function () {
this.checked = chk;
});
}
// Vuetify
let vuetify_options = {
theme: { disable: true },
lang: {
locales: {
zhHant: {
badge: '徽章',
close: '關閉',
dataIterator: {
noResultsText: '沒有符合條件的結果',
loadingText: '讀取中...',
},
dataTable: {
itemsPerPageText: '每頁列數:',
ariaLabel: {
sortDescending: ':降序排列。',
sortAscending: ':升序排列。',
sortNone: '無排序方式。點擊以升序排列。',
activateNone: '點擊以移除排序方式。',
activateDescending: '點擊以降序排列。',
activateAscending: '點擊以移除排序方式。',
},
sortBy: '排序方式',
},
dataFooter: {
itemsPerPageText: '每頁項目:',
itemsPerPageAll: '全部',
nextPage: '下一頁',
prevPage: '上一頁',
firstPage: '第一頁',
lastPage: '最後頁',
pageText: '{2} 項中的 {0}~{1} 項',
},
datePicker: {
itemsSelected: '已選擇 {0}',
nextMonthAriaLabel: '下個月',
nextYearAriaLabel: '明年',
prevMonthAriaLabel: '上個月',
prevYearAriaLabel: '去年',
},
noDataText: '沒有資料',
carousel: {
prev: '上一張',
next: '下一張',
ariaLabel: {
delimiter: '輪播圖 {0} / {1}',
},
},
calendar: {
moreEvents: '還有其他 {0} 項',
},
fileInput: {
counter: '{0} 個檔案',
counterSize: '{0} 個檔案(共 {1}',
},
timePicker: {
am: 'AM',
pm: 'PM',
},
pagination: {
ariaLabel: {
wrapper: '分頁導覽',
next: '下一頁',
previous: '上一頁',
page: '到頁面 {0}',
currentPage: '當前頁 {0}',
},
},
rating: {
ariaLabel: {
icon: '評分 {0} / {1}',
},
},
}
},
current: 'zhHant',
},
//theme: { disable: false},
};

View File

@@ -0,0 +1,11 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="footer.ascx.cs" Inherits="admin_Templates_TBS5ADM001_uc_footer" %>
<footer class="py-4 bg-light mt-auto">
<div class="container-fluid px-4">
<div class="d-flex align-items-center justify-content-between small">
<div class="text-muted">Copyright &copy; 17168ERP</div>
<div>
<a href="#">17168ERP</a>
</div>
</div>
</div>
</footer>

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class admin_Templates_TBS5ADM001_uc_footer : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
}

View File

@@ -0,0 +1,112 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="menu.ascx.cs" Inherits="admin_Templates_TBS5ADM001_uc_sideNav" %>
<nav class="sb-sidenav accordion sb-sidenav-light pt-2" id="sidenavAccordion">
<div class="sb-sidenav-menu">
<div class="nav" id="sideNav_1">
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<a class="nav-link collapsed num<%#Eval("num") %>" href="#"
data-bs-toggle="collapse" data-bs-target="#navitem_<%#Eval("num") %>" aria-expanded="false" aria-controls="navitem_<%#Eval("num") %>">
<div class="sb-nav-link-icon"><i class="mdi mdi-folder"></i></div>
<%#Eval("title") %>
<div class="sb-sidenav-collapse-arrow"><i class="mdi mdi-chevron-down"></i></div>
</a>
<div class="collapse" id="navitem_<%#Eval("num") %>" aria-labelledby="headingOne"
data-bs-parent="#sidenavAccordion">
<nav class="sb-sidenav-menu-nested nav">
<asp:Repeater ID="Repeater2" runat="server" OnItemDataBound="Repeater2_ItemDataBound">
<ItemTemplate>
<a class="nav-link" href="<%#ResolveUrl(ValString(Eval("url"))) %>"
target="<%#(ValString(Eval("target"))=="B"?"_blank":"_self") %>">
<%#Eval("title") %></a>
</ItemTemplate>
</asp:Repeater>
</nav>
</div>
</ItemTemplate>
</asp:Repeater>
</div>
<div class="nav d-none">
<div class="sb-sidenav-menu-heading">Core</div>
<a class="nav-link" href="index.html">
<div class="sb-nav-link-icon"><i class="mdi mdi-gauge"></i></div>
Dashboard
</a>
<div class="sb-sidenav-menu-heading">Interface</div>
<a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#collapseLayouts" aria-expanded="false" aria-controls="collapseLayouts">
<div class="sb-nav-link-icon"><i class="mdi mdi-television-guide"></i></div>
Layouts
<div class="sb-sidenav-collapse-arrow"><i class="mdi mdi-chevron-down"></i></div>
</a>
<div class="collapse" id="collapseLayouts" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordion">
<nav class="sb-sidenav-menu-nested nav">
<a class="nav-link" href="layout-static.html">Static Navigation</a>
<a class="nav-link" href="layout-sidenav-light.html">Light Sidenav</a>
</nav>
</div>
<a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#collapsePages" aria-expanded="false" aria-controls="collapsePages">
<div class="sb-nav-link-icon"><i class="mdi mdi-book-open-blank-variant"></i></div>
Pages
<div class="sb-sidenav-collapse-arrow"><i class="mdi mdi-chevron-down"></i></div>
</a>
<div class="collapse" id="collapsePages" aria-labelledby="headingTwo" data-bs-parent="#sidenavAccordion">
<nav class="sb-sidenav-menu-nested nav accordion" id="sidenavAccordionPages">
<a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#pagesCollapseAuth" aria-expanded="false" aria-controls="pagesCollapseAuth">Authentication
<div class="sb-sidenav-collapse-arrow"><i class="mdi mdi-chevron-down"></i></div>
</a>
<div class="collapse" id="pagesCollapseAuth" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordionPages">
<nav class="sb-sidenav-menu-nested nav">
<a class="nav-link" href="login.html">Login</a>
<a class="nav-link" href="register.html">Register</a>
<a class="nav-link" href="password.html">Forgot Password</a>
</nav>
</div>
<a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#pagesCollapseError" aria-expanded="false" aria-controls="pagesCollapseError">Error
<div class="sb-sidenav-collapse-arrow"><i class="mdi mdi-chevron-down"></i></div>
</a>
<div class="collapse" id="pagesCollapseError" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordionPages">
<nav class="sb-sidenav-menu-nested nav">
<a class="nav-link" href="401.html">401 Page</a>
<a class="nav-link" href="404.html">404 Page</a>
<a class="nav-link" href="500.html">500 Page</a>
<hr />
<a class="nav-link" href="401.html">401 Page</a>
<a class="nav-link" href="404.html">404 Page</a>
<a class="nav-link" href="500.html">500 Page</a>
<a class="nav-link" href="401.html">401 Page</a>
<a class="nav-link" href="404.html">404 Page</a>
<a class="nav-link" href="500.html">500 Page</a>
<a class="nav-link" href="401.html">401 Page</a>
<a class="nav-link" href="404.html">404 Page</a>
<a class="nav-link" href="500.html">500 Page</a>
<a class="nav-link" href="401.html">401 Page</a>
<a class="nav-link" href="404.html">404 Page</a>
<a class="nav-link" href="500.html">500 Page</a>
<a class="nav-link" href="401.html">401 Page</a>
<a class="nav-link" href="404.html">404 Page</a>
<a class="nav-link" href="500.html">500 Page</a>
</nav>
</div>
</nav>
</div>
<div class="sb-sidenav-menu-heading">Addons</div>
<a class="nav-link" href="charts.html">
<div class="sb-nav-link-icon"><i class="mdi mdi-chart-areaspline-variant"></i></div>
Charts
</a>
<a class="nav-link" href="tables.html">
<div class="sb-nav-link-icon"><i class="mdi mdi-table"></i></div>
Tables
</a>
</div>
</div>
<div class="sb-sidenav-footer">
<div class="small">名稱:</div>
17168ERP
</div>
</nav>
<asp:HiddenField ID="rtmp" runat="server" />
<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:Literal ID="ExpandMenu" runat="server"></asp:Literal>

View File

@@ -0,0 +1,156 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
public partial class admin_Templates_TBS5ADM001_uc_sideNav :
MyWeb.web_uc, MyWeb.config.IMenu
{
string PageUrl = ""; //目前後台的路徑
string Power = ""; //帳號權限
bool isDesigner = false;
List<string> nItem = new List<string>();
int setNav = 0;
DataTable menuDt = new DataTable();
private string item_collapsed { get; set; }
private string item_active { get; set; }
public void Data(DataTable dt)
{
menuDt = dt;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
MyWeb.admin admin = new MyWeb.admin();
if (admin.isLoign() && HttpContext.Current.Request.RawUrl.ToLower().IndexOf("admin/index.aspx") == -1)
{
Power = admin.info.power;
if (Left(Power, 1) == ",") { Power = Right(Power, Power.Length - 1); }
if (Right(Power, 1) == ",") { Power = Left(Power, Power.Length - 1); }
string[] UrlTmp = Request.Url.AbsolutePath.ToLower().Split('/');
PageUrl = UrlTmp[UrlTmp.Length - 2] + "/" + UrlTmp[UrlTmp.Length - 1];
if (admin.info.u_id == "Designer" && admin.info.group == "EZ") { isDesigner = true; }
Repeater1.DataSource = MenuRows();
Repeater1.DataBind();
((MyWeb.config.MenuNav)Page.Master.FindControl("nav")).InitNav(nItem);
}
}
}
protected DataTable MenuRows(int root = 0)
{
DataTable dt = new DataTable();
MyWeb.sql sql = new MyWeb.sql();
OleDbConnection sqlConn = sql.conn(db, p_name);
try
{
sqlConn.Open();
OleDbCommand sqlCmd = new OleDbCommand("", sqlConn);
if (!isDesigner)
{
//非設計師模式檢查權限
if (!isStrNull(Power))
{
sqlCmd.CommandText = "SELECT * FROM [item] Where root=? and num in (" + Power + ") order by range";
sqlCmd.Parameters.Add(new OleDbParameter("root", root));
dt = sql.dataTable(sqlCmd);
}
}
else
{
sqlCmd.CommandText = "SELECT * FROM [item] Where root=? order by range";
sqlCmd.Parameters.Add(new OleDbParameter("root", root));
dt = sql.dataTable(sqlCmd);
}
}
catch (Exception ex)
{
//Response.Write(ex.Message);
}
finally
{
sqlConn.Close(); sqlConn.Dispose();
}
return dt;
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
try
{
DataRowView row = (DataRowView)e.Item.DataItem;
HiddenField1.Value = ValString(row["num"]);
rtmp.Value = ValString(row["title"]);
if (menuDt.Rows.Count > 0)
{
DataTable dt = menuDt.Copy();
for (int i = dt.Rows.Count - 1; i >= 0; i--) {
if (dt.Rows[i]["root"].ToString() != HiddenField1.Value) { dt.Rows.Remove(dt.Rows[i]); }
}
if (dt.Rows.Count > 0)
{
Repeater Repeater2 = (Repeater)e.Item.FindControl("Repeater2");
Repeater2.DataSource = dt;
Repeater2.DataBind();
Repeater2.DataBind();
dt.Dispose();
}
else
{
}
}
else
{
}
}
catch(Exception ex)
{
}
}
protected void Repeater2_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
DataRowView row = (DataRowView)e.Item.DataItem;
if (ValString(row["url"]).ToLower().IndexOf(PageUrl) > -1)
{
setNav++;
}
else if (ValString(row["other_url"]).ToLower().IndexOf(PageUrl) > -1)
{
setNav++;
}
if (setNav == 1)
{
setNav++;
ExpandMenu.Text = "<input type=\"hidden\" id=\"ExpandMenuNum\" value=\"" + HiddenField1.Value + "\" />";
nItem.Add(rtmp.Value);
if ((PageUrl.IndexOf("reg.aspx") > -1 || PageUrl.IndexOf("edit.aspx") > -1) && !isStrNull(Request["num"]))
{
nItem.Add(ValString(row["title"]).Replace("登錄", "修改").Replace("查詢", "修改").Replace("新增", "修改"));
}
else
{
nItem.Add(ValString(row["title"]));
}
}
}
}

View File

@@ -0,0 +1,69 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="nav.ascx.cs" Inherits="admin_Templates_TBS5ADM001_uc_nav" %>
<nav class="sb-topnav navbar navbar-expand navbar-dark bg-dark ps-1 ps-md-2">
<!-- Sidebar Toggle-->
<button class="btn btn-link btn-sm order-0 me-0 bg-white bg-opacity-10 rounded-circle" id="sidebarToggle" href="#!">
<i class="mdi mdi-menu"></i>
</button>
<!-- Navbar Brand-->
<asp:HyperLink ID="pageTitle" runat="server" CssClass="navbar-brand ps-sm-2 me-2"></asp:HyperLink>
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%=ResolveUrl("~/admin/index2.aspx") %>">
<i class="mdi mdi-home"></i></a>
</li>
<asp:Repeater ID="breadCrumb" runat="server" ItemType="System.String" >
<ItemTemplate>
<li class="breadcrumb-item d-none d-lg-inline-block"><%# Item %></li>
</ItemTemplate>
</asp:Repeater>
</ol>
</nav>
<!-- Navbar Search-->
<div class="d-none d-md-none form-inline ms-auto me-0 me-md-3 my-2 my-md-0">
<div class="input-group rounded-pill overflow-hidden">
<input class="form-control" type="text" placeholder="搜尋..." aria-label="搜尋..." aria-describedby="btnNavbarSearch" />
<button class="btn btn-primary" id="btnNavbarSearch" type="button"><i class="mdi mdi-magnify"></i></button>
</div>
</div>
<!-- Navbar-->
<ul class="navbar-nav ms-auto ms-md-auto me-3 me-lg-4">
<li class="nav-item me-2" id="search_btn">
<a href="#search_panel" class="btn btn-outline-light rounded-pill" title="查詢"
data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight">
<i class="mdi mdi-magnify"></i>查詢
</a>
</li>
<li class="nav-item dropdown bg-light bg-opacity-25 px-1 rounded-pill">
<a class="nav-link dropdown-toggle text-white" id="navbarDropdown" href="#"
role="button" data-bs-toggle="dropdown" aria-expanded="false">
<i class="mdi mdi-account"></i>
<span class="d-none d-md-inline"> <%=admin.info.u_id %></span>
</a>
<ul class="dropdown-menu dropdown-menu-macos dropdown-menu-end" aria-labelledby="navbarDropdown">
<li class="d-md-none dropdown-item text-muted">
<i class="mdi mdi-card-account-details-outline text-primary me-2"></i> <%=admin.info.u_id %></li>
<li class="d-md-none"><hr class="dropdown-divider" /></li>
<li><a class="dropdown-item text-secondary" href="#!">
<i class="mdi mdi-cog text-primary me-2"></i> 設定</a></li>
<li><a class="dropdown-item text-secondary" href="#!">
<i class="mdi mdi-bell-outline text-primary me-2"></i> 通知</a></li>
<li><a class="dropdown-item text-secondary" href="#!">
<i class="mdi mdi-help-circle-outline text-primary me-2"></i>說明</a></li>
<li id="attenAddLi" runat="server">
<asp:LinkButton ID="attenAdd" runat="server" CausesValidation="false" OnClick="attenAdd_Click" CssClass="dropdown-item text-secondary">
<i class="mdi mdi-account-check text-primary me-2"></i> 上班</asp:LinkButton>
</li>
<li id="attenOutLi" runat="server">
<asp:LinkButton ID="attenOut" runat="server" CausesValidation="false" OnClick="attenOut_Click" CssClass="dropdown-item text-secondary">
<i class="mdi mdi-account-arrow-down text-primary me-2"></i> 下班</asp:LinkButton>
</li>
<li><hr class="dropdown-divider" /></li>
<li>
<asp:LinkButton ID="logout" OnClick="logout_Click" runat="server" CausesValidation="false" CssClass="dropdown-item text-secondary">
<i class="mdi mdi-power text-primary me-2"></i> 登出</asp:LinkButton>
</li>
</ul>
</li>
</ul>
</nav>

View File

@@ -0,0 +1,168 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class admin_Templates_TBS5ADM001_uc_nav : MyWeb.web_uc, MyWeb.config.MenuNav
{
public MyWeb.admin admin = new MyWeb.admin();
private Model.ezEntities _db = new Model.ezEntities();
protected void Page_Load(object sender, EventArgs e)
{
admin.isLoign();
MyWeb.master m = (MyWeb.master)Page.Master;
pageTitle.Text = m.company.name;
pageTitle.NavigateUrl = "~/admin/index2.aspx";
if (!IsPostBack)
{
//設計師模式不可打卡
if(admin.info.u_id == "Designer")
{
attenAddLi.Visible = false;
attenOutLi.Visible = false;
}
//判斷考勤IP
List<string> IPs = new List<string>();
string[] ips = System.Configuration.ConfigurationManager.AppSettings["attendancesIP"].ToString().Split(',');
if (ips.Length > 0)
{
bool success = false;
for (int i = 0; i <= ips.Length - 1; i++)
IPs.Add(ips[i]);
string myip = MyWeb.ip.Get();
if (IPs.Count > 0)
foreach (string IP in IPs)
if (myip.IndexOf(IP) == 0)
success = true;
if (!success)
{
attenAddLi.Visible = false;
attenOutLi.Visible = false;
}
}
}
}
protected void logout_Click(object sender, EventArgs e)
{
admin.ClearInfo();
Response.Redirect("~/admin/index.aspx");
}
public void InitNav(List<string> nItem)
{
breadCrumb.DataSource = nItem;
breadCrumb.DataBind();
this.Page.Title = String.Join("-",nItem.ToArray());
}
#region
protected void attenAdd_Click(object sender, EventArgs e)
{
int hr = _db.members.Where(q => q.admin_num == admin.info.num).Select(q => q.num).FirstOrDefault(); //人員num
//檢查是否已打卡
var qry = _db.member_check.Where(q => q.mem_num == hr);
qry = qry.Where(q => q.check_type == (int)Model.member.attendances.type.Start);
qry = qry.Where(q => q.check_date == DateTime.Today);
Model.member_check member_check = qry.FirstOrDefault();
if (member_check != null)
{
//已打卡
ScriptManager.RegisterStartupScript(Page, GetType(), "JsStatus", "msgtop('重複打卡','" + MyWeb.function.msgIcon.warning + "')", true);
}
else
{
if (hr != 0)
{
member_check = new Model.member_check();
member_check.login_ip = Request.UserHostAddress;
member_check.login_type = (int)Model.member.attendances.login.Account;
member_check.mem_num = hr;
member_check.check_type = (int)Model.member.attendances.type.Start;
member_check.check_date = DateTime.Today;
member_check.check_time = TimeSpan.Parse(DateTime.Now.ToString("HH:mm"));
try
{
_db.member_check.Add(member_check);
_db.SaveChanges();
ScriptManager.RegisterStartupScript(Page, GetType(), "JsStatus", "msgtop('打卡成功','" + MyWeb.function.msgIcon.success + "')", true);
}
catch (Exception ex)
{
ScriptManager.RegisterStartupScript(Page, GetType(), "JsStatus", "msgtop('打卡失敗','" + MyWeb.function.msgIcon.error + "')", true);
}
}
else
{
//未建立系統帳號
ScriptManager.RegisterStartupScript(Page, GetType(), "JsStatus", "msgtop('人員資料請先綁定系統帳號','" + MyWeb.function.msgIcon.warning + "')", true);
}
}
}
#endregion
#region
protected void attenOut_Click(object sender, EventArgs e)
{
int hr = _db.members.Where(q => q.admin_num == admin.info.num).Select(q => q.num).FirstOrDefault(); //人員num
//檢查是否已打卡
var qry = _db.member_check.Where(q => q.mem_num == hr);
qry = qry.Where(q => q.check_type == (int)Model.member.attendances.type.GetOff);
qry = qry.Where(q => q.check_date == DateTime.Today);
Model.member_check member_check = qry.FirstOrDefault();
if (member_check != null)
{
//已打卡
ScriptManager.RegisterStartupScript(Page, GetType(), "JsStatus", "msgtop('重複打卡','" + MyWeb.function.msgIcon.warning + "')", true);
}
else
{
if (hr != 0)
{
member_check = new Model.member_check();
member_check.login_ip = Request.UserHostAddress;
member_check.login_type = (int)Model.member.attendances.login.Account;
member_check.mem_num = hr;
member_check.check_type = (int)Model.member.attendances.type.GetOff;
member_check.check_date = DateTime.Today;
member_check.check_time = TimeSpan.Parse(DateTime.Now.ToString("HH:mm"));
try
{
_db.member_check.Add(member_check);
_db.SaveChanges();
ScriptManager.RegisterStartupScript(Page, GetType(), "JsStatus", "msgtop('打卡成功','" + MyWeb.function.msgIcon.success + "')", true);
}
catch (Exception ex)
{
ScriptManager.RegisterStartupScript(Page, GetType(), "JsStatus", "msgtop('打卡失敗','" + MyWeb.function.msgIcon.error + "')", true);
}
}
else
{
//未建立系統帳號
ScriptManager.RegisterStartupScript(Page, GetType(), "JsStatus", "msgtop('人員資料請先綁定系統帳號','" + MyWeb.function.msgIcon.warning + "')", true);
}
}
}
#endregion
}

View File

@@ -0,0 +1,247 @@
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="admin_Templates_Template003_MasterPage" %>
<%@ Register Src="~/admin/menu.ascx" TagPrefix="uc1" TagName="menu" %>
<%@ Register Src="~/admin/nav.ascx" TagPrefix="uc1" TagName="nav" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>後端管理</title>
<link href="<%=ResolveUrl("~/App_Script/bootstrap3/css/bootstrap.css") %>" rel="stylesheet" />
<link href="<%=ResolveUrl("~/App_Script/bootstrap_datepicker/css/datepicker.css") %>" rel="stylesheet" />
<link href="<%=ResolveUrl("~/admin/skin/ezweb-admin-icons/style.css") %>" rel="stylesheet" />
<link href="<%=ResolveUrl("~/admin/Templates/Template003/css/style.css") %>" rel="stylesheet" media="screen" />
<link href="<%=ResolveUrl("~/App_Script/custom-scrollbar-plugin/jquery.mCustomScrollbar.css") %>" rel="stylesheet" />
<link href="<%=ResolveUrl("~/App_Script/fontawesome/css/all.min.css") %>" rel="stylesheet" />
<!--[if lt IE 9]>
<link href="../skin/css/ie8-and-down.css" rel="stylesheet" type="text/css" />
<![endif]-->
<script type="text/javascript" src="<%=ResolveUrl("~/App_Script/js/jquery-3.5.1.min.js") %>"></script>
<script type="text/javascript" src="<%=ResolveUrl("~/App_Script/js/admin.js") %>"></script>
<script type="text/javascript" src="<%=ResolveUrl("~/App_Script/bootstrap3/js/bootstrap.js") %>"></script>
<script type="text/javascript" src="<%=ResolveUrl("~/App_Script/bootstrap_datepicker/js/bootstrap-datepicker-tw.js") %>"></script>
<script type="text/javascript" src="<%=ResolveUrl("~/App_Script/custom-scrollbar-plugin/jquery.mCustomScrollbar.js") %>"></script>
<script type="text/javascript" src="<%=ResolveUrl("~/App_Script/js/req.js") %>"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#goTop").click(function () {
$("html,body").animate({ scrollTop: 0 }, 800);
//$("html,body").animate({scrollTop:0},900,"easeOutBounce");
return false;
});
var side_height = $(window).height() - $('.header').height();
//$(".side1").css({ "min-height": side_height });
if ($(window).width() < 768) {
$(".main").attr({ "class": "main side_hide" });
} else {
$(".main").attr({ "class": "main" });
}
$(window).resize(function () {
if ($(window).width() < 768) {
$(".main").attr({ "class": "main side_hide" });
//$(".side1").css({ "height": side_height });
} else {
//$(".side1").css({ "height": side_height });
}
});
/*收合左側選單*/
$(".btn-side-toggle").click(function () {
$(".main").toggleClass("side_hide", 500);
});
/*左側選單項目收合功能*/
$("ul.collapsible_item").hide();
$("li.collapsible > a").click(function (e) {
e.preventDefault();
var cindex = $(this).index("li.collapsible > a");
var collapsibles = $("li.collapsible > a");
for (i = 0; i < collapsibles.length; i++) {
if ($(collapsibles[i]).hasClass("active") && i != cindex) {
$(collapsibles[i]).removeClass("active");
$(collapsibles[i]).parents("li.collapsible").find("ul.collapsible_item").slideUp();
$(collapsibles[i]).find("span").attr('class', 'glyphicon glyphicon-plus');
// break;
} else if (i == cindex) {
if ($(collapsibles[i]).find("span").attr('class') == 'glyphicon glyphicon-minus') {
$(collapsibles[i]).find("span").attr('class', 'glyphicon glyphicon-plus');
} else {
$(collapsibles[i]).find("span").attr('class', 'glyphicon glyphicon-minus');
}
}
}
$(this).parents("li.collapsible").find("ul.collapsible_item")
.slideToggle(400, function (e) {
$(".scroll-box").mCustomScrollbar("update");
});
$(this).toggleClass("active");
});
/*進階搜尋收合*/
$('.btn-search').click(function () {
if ($('.search_panel').css("display") == "none") {
$(this).html('<span class="glyphicon glyphicon-search"></span> 回列表頁');
} else {
$(this).html('<span class="glyphicon glyphicon-search"></span> 條件搜尋');
}
$('.search_panel').slideToggle();
$('#printArea').slideToggle();
});
/*日期選擇器*/
if ($(".datepicker").length > 0) {
$(".datepicker").datepicker().on('changeDate', function (e) {
$(this).datepicker('hide');
});
$('.datepicker').css("cursor", "pointer");
}
if ($('#ExpandMenuNum').length > 0) {
var num = $('#ExpandMenuNum').val();
$('li.collapsible > a.num' + num).siblings("ul.collapsible_item").show();
$('li.collapsible > a.num' + num).addClass("active");
$('li.collapsible > a.num' + num + ' span').attr('class', 'glyphicon glyphicon-minus');
}
});
$(document).ready(function () {
$(".scroll-box").mCustomScrollbar({
axis: "yx",
scrollInertia: 80
});
});
</script>
<%-- <script type="text/javascript" src="<%=ResolveUrl("~/App_Script/js/jquery-1.10.2.js") %>"></script>
<script type="text/javascript">
function msgbox(text) {
$.msgbox('<div style="min-width:200px;">' + text + '</div>');
}
</script>--%>
<script src="<%=ResolveUrl("~/App_Script/sweetalert2-9.10.9/dist/sweetalert2.min.js") %>"></script>
<link href="<%=ResolveUrl("~/App_Script/sweetalert2-9.10.9/dist/sweetalert2.min.css") %>" rel="stylesheet" />
<script>
function msgbox(html, icon = '', url = '') {
Swal.fire({
icon: icon,
html: html,
confirmButtonText: '關閉',
onClose: () => {
if (url != '') {
window.location = url;
}
}
});
}
function msgtop(html, icon = 'success') {
const Toast = Swal.mixin({
toast: true,
position: 'top-end',
showConfirmButton: false,
timer: 3000,
heightAuto: false,
timerProgressBar: true,
onOpen: (toast) => {
toast.addEventListener('mouseenter', Swal.stopTimer)
toast.addEventListener('mouseleave', Swal.resumeTimer)
}
})
Toast.fire({
icon: icon,
html: '<div class="swal2-toast-cus">' + html + '</div>'
})
}
var mctmp = '0';
function msgconfirm(html, btn, icon = 'question') {
if (mctmp == '0') {
Swal.fire({
html: html,
icon: icon,
showCancelButton: true,
confirmButtonText: '<i class="fas fa-check"></i> 確定',
cancelButtonText: '<i class="fas fa-times"></i> 取消'
}).then((result) => {
if (result.value) {
mctmp = '1';
if ($(btn)[0].hasAttribute('href')) {
var href = $(btn).attr('href');
window.location.href = href;
} else {
$(btn).click();
}
}
})
mctmp = '0';
return false;
} else {
mctmp = '0';
return true;
}
}
</script>
<link href="<%=ResolveUrl("~/App_Script/css/expand.css") %>" rel="stylesheet" />
<asp:ContentPlaceHolder ID="page_header" runat="server">
</asp:ContentPlaceHolder>
</head>
<body class="<% =(isHome()?"home login":"")%>" id="Body">
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div class="page-wrap">
<!-- Header -->
<div class="header hidden-print">
<div class="page-title login-center">
<h1><a><%=company.name %></a></h1>
</div>
</div>
<!-- /.header -->
<div class="main">
<div class="side1 hidden-print scroll-box">
<ul class="list-unstyled">
<%--<uc1:menu runat="server" ID="menu" />--%>
<uc1:menu runat="server" ID="menu" />
</ul>
</div>
<!-- /.side1 -->
<div class="content">
<div class="navigation hidden-login">
<button type="button" class="btn btn-side-toggle hidden-print">
<span class="sr-only">開合側選單</span>
<i class="fas fa-bars" style="font-size: 20px; color: #FFF"></i>
</button>
<%--<uc1:nav runat="server" ID="nav" />--%>
<uc1:nav runat="server" ID="nav" />
</div>
<!-- /.navbar -->
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
<!-- /.content -->
<div id="floating"></div>
</div>
<!-- /.main -->
<div class="footer">
</div>
<!-- /.footer -->
</div>
<!-- /.page-wrap -->
</form>
</body>
</html>

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class admin_Templates_Template003_MasterPage : MyWeb.master
{
protected void Page_Load(object sender, EventArgs e)
{
MasterLoad();
}
}

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<xml id="cat_template" type="master">
<title>樣版3</title>
<description>
樣版3描述
</description>
<img id="thumb" src="~/admin/Templates/Template003/images/body_bg.jpg"/>
<assets>
<file id="control" href="~/admin/Templates/Template003/default.master"/>
</assets>
</xml>

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 999 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB