diff --git a/Bootstrap.Admin/Bootstrap.Admin.csproj b/Bootstrap.Admin/Bootstrap.Admin.csproj
index fbd3fc78..68d04223 100644
--- a/Bootstrap.Admin/Bootstrap.Admin.csproj
+++ b/Bootstrap.Admin/Bootstrap.Admin.csproj
@@ -112,6 +112,7 @@
+
@@ -119,6 +120,7 @@
+
diff --git a/Bootstrap.Admin/Content/css/site.css b/Bootstrap.Admin/Content/css/site.css
index 8fda1e66..ae052d34 100644
--- a/Bootstrap.Admin/Content/css/site.css
+++ b/Bootstrap.Admin/Content/css/site.css
@@ -1,470 +1,478 @@
-body {
- color: #797979;
- background: #f1f2f7;
- font-family: 'Open Sans', sans-serif;
- padding: 0px !important;
- margin: 0px !important;
- font-size: 13px;
- text-rendering: optimizeLegibility;
- -webkit-font-smoothing: antialiased;
- -moz-font-smoothing: antialiased;
-}
-
-ul li {
- list-style: none;
-}
-
-.btn {
- outline: none;
-}
-
-a, a:hover, a:focus {
- text-decoration: none;
- outline: none;
-}
-
-div button span {
- margin-right: 4px;
-}
-
-.body-content {
- margin-top: 108px;
-}
-
-.row {
- margin-left: 0;
- margin-right: 0;
- margin-top: 92px;
-}
-
-.header, .footer {
- min-height: 60px;
- padding: 0 15px;
-}
-
-.header {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- z-index: 1002;
- height: 94px;
- border-color: #ddd;
- border-width: 0 0 1px 0;
- border-style: solid;
-}
-
-.white-bg {
- background: #fff;
- border-bottom: 1px solid #f1f2f7;
-}
-
-a.logo {
- font-size: 21px;
- color: #2e2e2e;
- float: left;
- margin-top: 15px;
- text-transform: uppercase;
-}
-
- a.logo:hover, a.logo:focus {
- text-decoration: none;
- outline: none;
- }
-
- a.logo span {
- color: #FF6C60;
- }
-
-.sidebar-toggle-box {
- float: left;
- padding-right: 15px;
- margin-top: 20px;
-}
-
- .sidebar-toggle-box .fa-bars {
- cursor: pointer;
- display: inline-block;
- font-size: 20px;
- }
-
-.site-footer {
- background: #5b6e84;
- color: #fff;
- padding: 10px 0;
-}
-
-.go-top {
- margin-right: 1%;
- float: right;
- background: rgba(255,255,255,.5);
- width: 20px;
- height: 20px;
- border-radius: 50%;
- -webkit-border-radius: 50%;
-}
-
- .go-top:hover {
- background-color: white;
- }
-
- .go-top i {
- color: #2A3542;
- }
-
-.top-nav {
- margin-top: 7px;
-}
-
- .top-nav li.dropdown .dropdown-menu {
- float: right;
- right: 0;
- left: auto;
- }
-
- .top-nav .username {
- font-size: 13px;
- color: #555555;
- }
-
- .top-nav ul.top-menu > li > a {
- border: 1px solid #eeeeee;
- border-radius: 4px;
- -webkit-border-radius: 4px;
- padding: 6px;
- background: none;
- margin-right: 0;
- }
-
- .top-nav ul.top-menu > li {
- margin-left: 10px;
- }
-
- .top-nav ul.top-menu > li > a:hover, .top-nav ul.top-menu > li > a:focus {
- border: 1px solid #F1F2F7;
- background: #F1F2F7;
- }
-
- .top-nav ul.top-menu > li > a > img {
- height: 29px;
- width: 29px;
- }
-
- .top-nav .dropdown-menu.extended.logout {
- top: 50px;
- }
-
- .top-nav .nav .caret {
- border-bottom-color: #A4AABA;
- border-top-color: #A4AABA;
- }
-
- .top-nav ul.top-menu > li > a:hover .caret {
- border-bottom-color: #000;
- border-top-color: #000;
- }
-
- .top-nav ul.top-menu > li .dropdown-menu.logout {
- width: 268px !important;
- }
-
-.nav > li, ul.top-menu > li {
- float: left;
-}
-
- ul.top-menu > li > a {
- color: #666666;
- font-size: 16px;
- border-radius: 4px;
- -webkit-border-radius: 4px;
- border: 1px solid #f0f0f8 !important;
- padding: 2px 6px;
- margin-right: 15px;
- }
-
- ul.top-menu > li > a:hover, ul.top-menu > li > a:focus {
- border: 1px solid #f0f0f8 !important;
- background-color: #fff !important;
- border-color: #f0f0f8 !important;
- text-decoration: none;
- border-radius: 4px;
- -webkit-border-radius: 4px;
- color: #2E2E2E !important;
- }
-
-.search {
- margin-top: 6px;
- width: 20px;
- -webkit-transition: all .3s ease;
- -moz-transition: all .3s ease;
- -ms-transition: all .3s ease;
- -o-transition: all .3s ease;
- transition: all .3s ease;
- border: 1px solid #fff;
- box-shadow: none;
- background: url("../images/search-icon.png") no-repeat 10px 8px;
- padding: 0 5px 0 35px;
- color: #000;
-}
-
- .search:focus {
- margin-top: 5px;
- width: 180px;
- border: 1px solid #eaeaea;
- box-shadow: none;
- -webkit-transition: all .3s ease;
- -moz-transition: all .3s ease;
- -ms-transition: all .3s ease;
- -o-transition: all .3s ease;
- transition: all .3s ease;
- color: #c8c8c8;
- font-weight: 300;
- }
-
-.log-arrow-up {
- background: url("../images/arrow-up.png") no-repeat;
- width: 20px;
- height: 11px;
- position: absolute;
- right: 20px;
- top: -10px;
-}
-
-.dropdown-menu.extended li a {
- border-bottom: 1px solid #EBEBEB !important;
- font-size: 12px;
- list-style: none;
-}
-
-.dropdown-menu.extended li a {
- padding: 15px 10px !important;
- width: 100%;
- display: inline-block;
-}
-
- .dropdown-menu.extended li a:hover {
- background-color: #F7F8F9 !important;
- color: #2E2E2E;
- }
-
-.dropdown-menu.extended {
- max-width: 300px !important;
- min-width: 160px !important;
- top: 42px;
- width: 235px !important;
- padding: 0;
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.176) !important;
- border: none !important;
- border-radius: 4px;
- -webkit-border-radius: 4px;
-}
-
- .dropdown-menu.extended.logout > li {
- float: left;
- text-align: center;
- width: 33.3%;
- }
-
- .dropdown-menu.extended.logout > li:last-child {
- float: left;
- text-align: center;
- width: 100%;
- background: #a9d96c;
- border-radius: 0 0 3px 3px;
- }
-
- .dropdown-menu.extended.logout > li:last-child > a, .dropdown-menu.extended.logout > li:last-child > a:hover {
- color: #fff;
- border-bottom: none !important;
- text-transform: uppercase;
- }
-
- .dropdown-menu.extended.logout > li:last-child > a:hover > i {
- color: #fff;
- }
-
- .dropdown-menu.extended.logout > li > a {
- color: #a4abbb;
- border-bottom: none !important;
- }
-
- .dropdown-menu.extended.logout > li > a:hover {
- background: none !important;
- }
-
- .dropdown-menu.extended.logout > li > a:hover i {
- color: #50c8ea;
- }
-
- .dropdown-menu.extended.logout > li > a i {
- font-size: 17px;
- }
-
- .dropdown-menu.extended.logout > li > a > i {
- display: block;
- }
-
-@media screen and (-webkit-min-device-pixel-ratio:0) {
- /* Safari and Chrome */
- .dropdown-menu.extended {
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.176) !important;
- }
-}
-
-/*Login*/
-.form-signin {
- width: 330px;
- max-width: 330px;
- margin: 0 auto;
- background: #fff;
- border-radius: 5px;
- -webkit-border-radius: 5px;
- border: solid 1px #ddd;
-}
-
- .form-signin h2.form-signin-heading {
- margin: 0;
- padding: 20px 15px;
- text-align: center;
- background: #41cac0;
- border-radius: 5px 5px 0 0;
- -webkit-border-radius: 5px 5px 0 0;
- color: #fff;
- font-size: 18px;
- text-transform: uppercase;
- font-weight: 300;
- font-family: 'Open Sans', sans-serif;
- }
-
- .form-signin div.login-wrap {
- padding: 20px;
- }
-
- .form-signin div.input-group {
- margin-bottom: 15px;
- border-radius: 5px;
- -webkit-border-radius: 5px;
- border: 1px solid #eaeaea;
- box-shadow: none;
- font-size: 12px;
- }
-
- .form-signin div.input-group > span {
- top: 0;
- background-color: #5bc0de;
- }
-
- .form-signin div.input-group > span, div.input-group > input {
- border-color: #5bc0de;
- }
-
- .form-signin .btn-login {
- background: #f67a6e;
- color: #fff;
- text-transform: uppercase;
- font-weight: 300;
- font-family: 'Open Sans', sans-serif;
- box-shadow: 0 4px #e56b60;
- margin-bottom: 20px;
- outline: none !important;
- }
-
- .form-signin .checkbox {
- padding-left: 24px;
- }
-
- .form-signin .checkbox > input {
- top: -1px;
- }
-
- .form-signin .checkbox > label {
- padding-left: 4px;
- }
-
-/*end login*/
-
-/*bootstrap table 下边距*/
-.table-body {
- padding: 0px 8px;
-}
-
-.terminal-form-group {
- margin-top: 10px;
-}
-
-.terminal-dialog {
- width: 800px;
-}
-
-.terminal-close {
- margin-top: 4px !important;
-}
-
-.terminal-dialog-header {
- background-color: #f5f5f5;
- border-top-left-radius: 6px;
- border-top-right-radius: 6px;
-}
-
-.terminal-pannel {
- padding-bottom: 10px;
- margin-bottom: 38px;
-}
-
-.fixed-table-loading {
- padding-top: 5px;
-}
-
-input.error {
- border-color: red;
-}
-
-input.valid {
- border-color: green;
-}
-
-.container-fluid {
- padding-left: 0;
-}
-
-.navbar-default {
- background-color: #fff;
- border-color: #fff;
-}
-
-.navbar-collapse {
- margin-left: 0;
- padding-left: 0;
-}
-
-.lgbMenu {
- float: left;
- padding-top: 4px;
- padding-left: 6px;
-}
-
-.lgbBreadcrumb {
- position: absolute;
- top: 56px;
- left: 15px;
- right: 15px;
- border-color: #ddd;
- border-width: 1px 0 0 0;
- border-style: solid;
-}
-
- .lgbBreadcrumb > ul {
- background-color: transparent;
- }
-
- .lgbBreadcrumb > ul > li.active {
- display: inline-block;
- }
-
- .lgbBreadcrumb > ul > li.load {
- display: none;
- }
-
- .lgbBreadcrumb > ul > li > a > i {
- padding-right: 6px;
- }
+body {
+ color: #797979;
+ background: #f1f2f7;
+ font-family: 'Open Sans', sans-serif;
+ padding: 0px !important;
+ margin: 0px !important;
+ font-size: 13px;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-font-smoothing: antialiased;
+}
+
+ul li {
+ list-style: none;
+}
+
+.btn {
+ outline: none;
+}
+
+a, a:hover, a:focus {
+ text-decoration: none;
+ outline: none;
+}
+
+div button span {
+ margin-right: 4px;
+}
+
+.body-content {
+ margin-top: 108px;
+}
+
+.row {
+ margin-left: 0;
+ margin-right: 0;
+ margin-top: 92px;
+}
+
+.header, .footer {
+ min-height: 60px;
+ padding: 0 15px;
+}
+
+.header {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ z-index: 1002;
+ height: 94px;
+ border-color: #ddd;
+ border-width: 0 0 1px 0;
+ border-style: solid;
+}
+
+.white-bg {
+ background: #fff;
+ border-bottom: 1px solid #f1f2f7;
+}
+
+a.logo {
+ font-size: 21px;
+ color: #2e2e2e;
+ float: left;
+ margin-top: 15px;
+ text-transform: uppercase;
+}
+
+ a.logo:hover, a.logo:focus {
+ text-decoration: none;
+ outline: none;
+ }
+
+ a.logo span {
+ color: #FF6C60;
+ }
+
+.sidebar-toggle-box {
+ float: left;
+ padding-right: 15px;
+ margin-top: 20px;
+}
+
+ .sidebar-toggle-box .fa-bars {
+ cursor: pointer;
+ display: inline-block;
+ font-size: 20px;
+ }
+
+.site-footer {
+ background: #5b6e84;
+ color: #fff;
+ padding: 10px 0;
+}
+
+.go-top {
+ margin-right: 1%;
+ float: right;
+ background: rgba(255,255,255,.5);
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ -webkit-border-radius: 50%;
+}
+
+ .go-top:hover {
+ background-color: white;
+ }
+
+ .go-top i {
+ color: #2A3542;
+ }
+
+.top-nav {
+ margin-top: 7px;
+}
+
+ .top-nav li.dropdown .dropdown-menu {
+ float: right;
+ right: 0;
+ left: auto;
+ }
+
+ .top-nav .username {
+ font-size: 13px;
+ color: #555555;
+ }
+
+ .top-nav ul.top-menu > li > a {
+ border: 1px solid #eeeeee;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ padding: 6px;
+ background: none;
+ margin-right: 0;
+ }
+
+ .top-nav ul.top-menu > li {
+ margin-left: 10px;
+ }
+
+ .top-nav ul.top-menu > li > a:hover, .top-nav ul.top-menu > li > a:focus {
+ border: 1px solid #F1F2F7;
+ background: #F1F2F7;
+ }
+
+ .top-nav ul.top-menu > li > a > img {
+ height: 29px;
+ width: 29px;
+ }
+
+ .top-nav .dropdown-menu.extended.logout {
+ top: 50px;
+ }
+
+ .top-nav .nav .caret {
+ border-bottom-color: #A4AABA;
+ border-top-color: #A4AABA;
+ }
+
+ .top-nav ul.top-menu > li > a:hover .caret {
+ border-bottom-color: #000;
+ border-top-color: #000;
+ }
+
+ .top-nav ul.top-menu > li .dropdown-menu.logout {
+ width: 268px !important;
+ }
+
+.nav > li, ul.top-menu > li {
+ float: left;
+}
+
+ ul.top-menu > li > a {
+ color: #666666;
+ font-size: 16px;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border: 1px solid #f0f0f8 !important;
+ padding: 2px 6px;
+ margin-right: 15px;
+ }
+
+ ul.top-menu > li > a:hover, ul.top-menu > li > a:focus {
+ border: 1px solid #f0f0f8 !important;
+ background-color: #fff !important;
+ border-color: #f0f0f8 !important;
+ text-decoration: none;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ color: #2E2E2E !important;
+ }
+
+.search {
+ margin-top: 6px;
+ width: 20px;
+ -webkit-transition: all .3s ease;
+ -moz-transition: all .3s ease;
+ -ms-transition: all .3s ease;
+ -o-transition: all .3s ease;
+ transition: all .3s ease;
+ border: 1px solid #fff;
+ box-shadow: none;
+ background: url("../images/search-icon.png") no-repeat 10px 8px;
+ padding: 0 5px 0 35px;
+ color: #000;
+}
+
+ .search:focus {
+ margin-top: 5px;
+ width: 180px;
+ border: 1px solid #eaeaea;
+ box-shadow: none;
+ -webkit-transition: all .3s ease;
+ -moz-transition: all .3s ease;
+ -ms-transition: all .3s ease;
+ -o-transition: all .3s ease;
+ transition: all .3s ease;
+ color: #c8c8c8;
+ font-weight: 300;
+ }
+
+.log-arrow-up {
+ background: url("../images/arrow-up.png") no-repeat;
+ width: 20px;
+ height: 11px;
+ position: absolute;
+ right: 20px;
+ top: -10px;
+}
+
+.dropdown-menu.extended li a {
+ border-bottom: 1px solid #EBEBEB !important;
+ font-size: 12px;
+ list-style: none;
+}
+
+.dropdown-menu.extended li a {
+ padding: 15px 10px !important;
+ width: 100%;
+ display: inline-block;
+}
+
+ .dropdown-menu.extended li a:hover {
+ background-color: #F7F8F9 !important;
+ color: #2E2E2E;
+ }
+
+.dropdown-menu.extended {
+ max-width: 300px !important;
+ min-width: 160px !important;
+ top: 42px;
+ width: 235px !important;
+ padding: 0;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.176) !important;
+ border: none !important;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+
+ .dropdown-menu.extended.logout > li {
+ float: left;
+ text-align: center;
+ width: 33.3%;
+ }
+
+ .dropdown-menu.extended.logout > li:last-child {
+ float: left;
+ text-align: center;
+ width: 100%;
+ background: #a9d96c;
+ border-radius: 0 0 3px 3px;
+ }
+
+ .dropdown-menu.extended.logout > li:last-child > a, .dropdown-menu.extended.logout > li:last-child > a:hover {
+ color: #fff;
+ border-bottom: none !important;
+ text-transform: uppercase;
+ }
+
+ .dropdown-menu.extended.logout > li:last-child > a:hover > i {
+ color: #fff;
+ }
+
+ .dropdown-menu.extended.logout > li > a {
+ color: #a4abbb;
+ border-bottom: none !important;
+ }
+
+ .dropdown-menu.extended.logout > li > a:hover {
+ background: none !important;
+ }
+
+ .dropdown-menu.extended.logout > li > a:hover i {
+ color: #50c8ea;
+ }
+
+ .dropdown-menu.extended.logout > li > a i {
+ font-size: 17px;
+ }
+
+ .dropdown-menu.extended.logout > li > a > i {
+ display: block;
+ }
+
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+ /* Safari and Chrome */
+ .dropdown-menu.extended {
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.176) !important;
+ }
+}
+
+/*Login*/
+.form-signin {
+ width: 330px;
+ max-width: 330px;
+ margin: 0 auto;
+ background: #fff;
+ border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border: solid 1px #ddd;
+}
+
+ .form-signin h2.form-signin-heading {
+ margin: 0;
+ padding: 20px 15px;
+ text-align: center;
+ background: #41cac0;
+ border-radius: 5px 5px 0 0;
+ -webkit-border-radius: 5px 5px 0 0;
+ color: #fff;
+ font-size: 18px;
+ text-transform: uppercase;
+ font-weight: 300;
+ font-family: 'Open Sans', sans-serif;
+ }
+
+ .form-signin div.login-wrap {
+ padding: 20px;
+ }
+
+ .form-signin div.input-group {
+ margin-bottom: 15px;
+ border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border: 1px solid #eaeaea;
+ box-shadow: none;
+ font-size: 12px;
+ }
+
+ .form-signin div.input-group > span {
+ top: 0;
+ background-color: #5bc0de;
+ }
+
+ .form-signin div.input-group > span, div.input-group > input {
+ border-color: #5bc0de;
+ }
+
+ .form-signin .btn-login {
+ background: #f67a6e;
+ color: #fff;
+ text-transform: uppercase;
+ font-weight: 300;
+ font-family: 'Open Sans', sans-serif;
+ box-shadow: 0 4px #e56b60;
+ margin-bottom: 20px;
+ outline: none !important;
+ }
+
+ .form-signin .checkbox {
+ padding-left: 24px;
+ }
+
+ .form-signin .checkbox > input {
+ top: -1px;
+ }
+
+ .form-signin .checkbox > label {
+ padding-left: 4px;
+ }
+
+/*end login*/
+
+/*bootstrap table 下边距*/
+.table-body {
+ padding: 0px 8px;
+}
+
+.terminal-form-group {
+ margin-top: 10px;
+}
+
+.terminal-dialog {
+ width: 800px;
+}
+
+.terminal-close {
+ margin-top: 4px !important;
+}
+
+.terminal-dialog-header {
+ background-color: #f5f5f5;
+ border-top-left-radius: 6px;
+ border-top-right-radius: 6px;
+}
+
+.terminal-pannel {
+ padding-bottom: 10px;
+ margin-bottom: 38px;
+}
+
+.fixed-table-loading {
+ padding-top: 5px;
+}
+
+input.error {
+ padding-right: 30px;
+ border-color: red;
+ background-repeat: no-repeat;
+ background-image: url('../images/error.png');
+ background-position: right 8px center;
+}
+
+input.valid {
+ padding-right: 30px;
+ border-color: green;
+ background-repeat: no-repeat;
+ background-image: url('../images/success.png');
+ background-position: right 8px center;
+}
+
+.container-fluid {
+ padding-left: 0;
+}
+
+.navbar-default {
+ background-color: #fff;
+ border-color: #fff;
+}
+
+.navbar-collapse {
+ margin-left: 0;
+ padding-left: 0;
+}
+
+.lgbMenu {
+ float: left;
+ padding-top: 4px;
+ padding-left: 6px;
+}
+
+.lgbBreadcrumb {
+ position: absolute;
+ top: 56px;
+ left: 15px;
+ right: 15px;
+ border-color: #ddd;
+ border-width: 1px 0 0 0;
+ border-style: solid;
+}
+
+ .lgbBreadcrumb > ul {
+ background-color: transparent;
+ }
+
+ .lgbBreadcrumb > ul > li.active {
+ display: inline-block;
+ }
+
+ .lgbBreadcrumb > ul > li.load {
+ display: none;
+ }
+
+ .lgbBreadcrumb > ul > li > a > i {
+ padding-right: 6px;
+ }
diff --git a/Bootstrap.Admin/Content/images/error.png b/Bootstrap.Admin/Content/images/error.png
new file mode 100644
index 00000000..427f899c
Binary files /dev/null and b/Bootstrap.Admin/Content/images/error.png differ
diff --git a/Bootstrap.Admin/Content/images/success.png b/Bootstrap.Admin/Content/images/success.png
new file mode 100644
index 00000000..145b5551
Binary files /dev/null and b/Bootstrap.Admin/Content/images/success.png differ