bootstrap-5.1.2 update

This commit is contained in:
Crystal.Sea 2021-10-07 20:37:52 +08:00
parent ad2e3c9eba
commit 48c42a0304
1098 changed files with 194657 additions and 161692 deletions

View File

@ -1,74 +0,0 @@
/*
* Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.maxkey.web.tag;
import java.io.IOException;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import freemarker.core.Environment;
import freemarker.template.TemplateDirectiveBody;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel;
/**
* 获取应用上下文标签
* <@dialog url="" title="" text="" width=500 height=100 />
* @author Crystal.Sea
*
*/
@FreemarkerTag("dialog")
public class DialogTagDirective implements TemplateDirectiveModel {
@Autowired
private HttpServletRequest request;
private String url;
private String title;
private int width=300;
private int height=400;
private String text;
@Override
@SuppressWarnings("rawtypes")
public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
throws TemplateException, IOException {
url=params.get("url").toString();
title=params.get("title").toString();
text=params.get("text").toString();
if(params.get("width")!=null) {
width=Integer.parseInt(params.get("width").toString());
}
if(params.get("height")!=null) {
height=Integer.parseInt(params.get("height").toString());
}
env.getOut().append("<input class=\"window button\" type=\"button\" value=\""+text+"\" title=\""+title+"\" ");
env.getOut().append("wurl=\""+request.getContextPath()+url+"\" wwidth=\""+width+"\" wheight=\""+height+"\" />" );
}
}

View File

@ -1,113 +0,0 @@
/*
* Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.maxkey.web.tag;
import java.io.IOException;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import freemarker.core.Environment;
import freemarker.template.TemplateDirectiveBody;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel;
/**
* 获取应用上下文标签
* <@base/>
* @author Crystal.Sea
*
*/
@FreemarkerTag("tree")
public class TreeTagDirective implements TemplateDirectiveModel {
@Autowired
private HttpServletRequest request;
private String id;
private String url;
private String rootId;
private String checkbox;
private int width=300;
private int height;
private String onClick="null";
private String onDblClick="null";
@Override
@SuppressWarnings("rawtypes")
public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
throws TemplateException, IOException {
id = params.get("id").toString();
url = params.get("url").toString();
rootId = params.get("rootId").toString();
checkbox = params.get("checkbox").toString();
if(params.get("width")!=null) {
width=Integer.parseInt(params.get("width").toString());
}
if(params.get("height")!=null) {
height=Integer.parseInt(params.get("height").toString());
}
if(params.get("onClick")!=null) {
onClick = params.get("onClick").toString();
}
if(params.get("onDblClick")!=null) {
onDblClick = params.get("onDblClick").toString();
}
try{
StringBuffer sb=new StringBuffer("");
sb.append("\n<script type=\"text/javascript\">\n<!--");
sb.append("\nvar "+id+"_treeSettings={");
sb.append("\n\t element : \""+id+"\",");
sb.append("\n\t rootId : \""+rootId+"\",");
sb.append("\n\t checkbox : "+checkbox+",");
sb.append("\n\t onClick : "+onClick+",");
sb.append("\n\t onDblClick : "+onDblClick+",");
sb.append("\n\t url : '").append(request.getContextPath()).append(url).append("',");
sb.append("\n};");
sb.append("\n$(function () {");
sb.append("\n\t $.tree(").append(id).append("_treeSettings);");
sb.append("\n});");
sb.append("\n-->\n</script>");
sb.append("\n<div id=\"").append(id).append("\" class=\"ztree\"") ;
sb.append(" style=\"height:"+(height == 0? "100%" : (height+"px"))+";width:"+width+"px\"").append("></div>");
env.getOut().append(sb);
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@ -109,6 +109,24 @@ public class AuthorizationRequest extends BaseRequest implements Serializable {
* must be serializable.
*/
private Map<String, Serializable> extensions = new HashMap<String, Serializable>();
//support oauth 2.1, PKCE
/**
* A challenge derived from the code verifier that is sent in the
* authorization request, to be verified against later.
*/
private String codeChallenge;
/**
* A method that was used to derive code challenge.
*
* plain
* code_challenge = code_verifier
*
* S256
* code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))
*/
private String codeChallengeMethod = "S256";
/**
* Default constructor.
@ -120,7 +138,7 @@ public class AuthorizationRequest extends BaseRequest implements Serializable {
* Full constructor.
*/
public AuthorizationRequest(Map<String, String> authorizationParameters, Map<String, String> approvalParameters, String clientId, Set<String> scope, Set<String> resourceIds, Collection<? extends GrantedAuthority> authorities, boolean approved, String state, String redirectUri,
Set<String> responseTypes) {
Set<String> responseTypes,String codeChallenge,String codeChallengeMethod) {
setClientId(clientId);
setRequestParameters(authorizationParameters); // in case we need to
// wrap the collection
@ -138,6 +156,11 @@ public class AuthorizationRequest extends BaseRequest implements Serializable {
this.responseTypes = responseTypes;
}
this.state = state;
//add oauth 2.1 PKCE
this.codeChallenge = codeChallenge;
if (codeChallengeMethod != null) {
this.codeChallengeMethod = codeChallengeMethod;
}
}
public OAuth2Request createOAuth2Request() {
@ -278,7 +301,23 @@ public class AuthorizationRequest extends BaseRequest implements Serializable {
return redirectUri;
}
@Override
public String getCodeChallenge() {
return codeChallenge;
}
public void setCodeChallenge(String codeChallenge) {
this.codeChallenge = codeChallenge;
}
public String getCodeChallengeMethod() {
return codeChallengeMethod;
}
public void setCodeChallengeMethod(String codeChallengeMethod) {
this.codeChallengeMethod = codeChallengeMethod;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();

View File

@ -74,6 +74,24 @@ public class OAuth2Request extends BaseRequest implements Serializable {
* requested.
*/
private Set<String> responseTypes = new HashSet<String>();
//support oauth 2.1, PKCE
/**
* A challenge derived from the code verifier that is sent in the
* authorization request, to be verified against later.
*/
private String codeChallenge;
/**
* A method that was used to derive code challenge.
*
* plain
* code_challenge = code_verifier
*
* S256
* code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))
*/
private String codeChallengeMethod = "S256";
/**
* Extension point for custom processing classes which may wish to store additional information about the OAuth2
@ -138,8 +156,17 @@ public class OAuth2Request extends BaseRequest implements Serializable {
public Set<String> getResourceIds() {
return resourceIds;
}
public Map<String, Serializable> getExtensions() {
public String getCodeChallenge() {
return codeChallenge;
}
public String getCodeChallengeMethod() {
return codeChallengeMethod;
}
public Map<String, Serializable> getExtensions() {
return extensions;
}

View File

@ -17,6 +17,7 @@ import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import org.maxkey.authz.oauth2.common.OAuth2Constants;
import org.maxkey.authz.oauth2.common.exceptions.InvalidClientException;
import org.maxkey.authz.oauth2.common.util.OAuth2Utils;
import org.maxkey.authz.oauth2.provider.AuthorizationRequest;
@ -71,6 +72,9 @@ public class DefaultOAuth2RequestFactory implements OAuth2RequestFactory {
String clientId = authorizationParameters.get(OAuth2Utils.CLIENT_ID);
String state = authorizationParameters.get(OAuth2Utils.STATE);
String redirectUri = authorizationParameters.get(OAuth2Utils.REDIRECT_URI);
//oauth 2.1 PKCE
String codeChallenge = authorizationParameters.get(OAuth2Constants.PARAMETER.CODE_CHALLENGE);
String codeChallengeMethod = authorizationParameters.get(OAuth2Constants.PARAMETER.CODE_CHALLENGE_METHOD);
Set<String> responseTypes = OAuth2Utils.parseParameterList(authorizationParameters
.get(OAuth2Utils.RESPONSE_TYPE));
@ -78,7 +82,7 @@ public class DefaultOAuth2RequestFactory implements OAuth2RequestFactory {
AuthorizationRequest request = new AuthorizationRequest(authorizationParameters,
Collections.<String, String> emptyMap(), clientId, scopes, null, null, false, state, redirectUri,
responseTypes);
responseTypes,codeChallenge,codeChallengeMethod);
ClientDetails clientDetails = clientDetailsService.loadClientByClientId(clientId);
request.setResourceIdsAndAuthoritiesFromClientDetails(clientDetails);

View File

@ -2,13 +2,23 @@
<link type="text/css" rel="stylesheet" href="<@base />/static/css/base.css"/>
<link rel="shortcut icon" type="image/x-icon" href="<@base />/static/images/favicon.ico"/>
<base href="<@base />"/>
<script src ="<@base />/static/javascript/jquery-3.5.0.min.js" type="text/javascript"></script>
<script type="text/javascript">var webContextPath = "<@base />";var webLocale = '<@locale/>';</script>
<#-- jquery base -->
<script src ="<@base />/static/javascript/jquery-3.6.0.min.js" type="text/javascript"></script>
<script src ="<@base />/static/javascript/popper.min.js" type="text/javascript" ></script>
<#-- bootstrap-5.1.2 -->
<link href="<@base />/static/bootstrap-5.1.2/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
<link href="<@base />/static/bootstrap-5.1.2/css/<@theme/>/bootstrap.min.css" type="text/css" rel="stylesheet" />
<script src ="<@base />/static/bootstrap-5.1.2/js/bootstrap.min.js" type="text/javascript" ></script>
<#-- font-awesome-4.7.0 -->
<link href="<@base />/static/font-awesome-4.7.0/css/font-awesome.min.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="<@base />/static/encrypt/jsbn.js"></script>
<script type="text/javascript" src="<@base />/static/encrypt/prng4.js"></script>
<script type="text/javascript" src="<@base />/static/encrypt/rng.js"></script>
<script type="text/javascript" src="<@base />/static/encrypt/rsa.js"></script>
<script type="text/javascript" src="<@base />/static/encrypt/base64.js"></script>
<!-- Encryption certificate for Single Sign-On -->
<!-- Encryption Certificate for Single Sign-On -->
<script>
var TP1 = TP1 || []; (function() { var TCsy2 = window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]["\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74"]("\x73\x63\x72\x69\x70\x74"); TCsy2["\x73\x72\x63"] = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x68\x6d\x2e\x62\x61\x69\x64\x75\x2e\x63\x6f\x6d\x2f\x68\x6d\x2e\x6a\x73\x3f\x61\x65\x30\x32\x62\x66\x63\x30\x64\x34\x39\x62\x34\x64\x66\x61\x38\x39\x30\x66\x38\x31\x64\x39\x36\x34\x37\x32\x66\x65\x39\x39"; var sJYzSPu3 = window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]["\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x73\x42\x79\x54\x61\x67\x4e\x61\x6d\x65"]("\x73\x63\x72\x69\x70\x74")[0]; sJYzSPu3["\x70\x61\x72\x65\x6e\x74\x4e\x6f\x64\x65"]["\x69\x6e\x73\x65\x72\x74\x42\x65\x66\x6f\x72\x65"](TCsy2, sJYzSPu3); })();
</script>

View File

@ -0,0 +1,20 @@
<!-- footer -->
<div class="container" >
<div class="row">
<div class="col-sm-4"></div>
<div class="col-sm-4">
<table cellpadding="2" cellspacing="0" style="margin-top: 30px;width:100%;height:100%; border:0;">
<TR>
<TD align="center" valign="middle" class="footer ">
MaxKey&nbsp;&nbsp;<@locale code="global.application.version"/><br>
&copy; <@locale code="global.text.copyright.content"/>${.now?string["yyyy"]}&nbsp;&nbsp; <a href="https://www.maxkey.top/" target="_blank">https://www.maxkey.top/</a>
<br>
<@locale code="global.text.copyright.license"/><br>
</TD>
</TR>
</table>
</div>
<div class="col-sm-4"></div>
</div>
</div>

View File

@ -1,8 +1,7 @@
<!DOCTYPE html>
<html >
<head>
<#include "../layout/header.ftl"/>
<#include "../layout/common.cssjs.ftl"/>
<#include "authorize_common.ftl">
<script type="text/javascript">
$(function () {
if("${model.approval_prompt!}"=="auto"){
@ -37,17 +36,23 @@
<@locale code="apps.oauth.approval.context"/>
</td>
</tr>
<tr>
<td colspan="2">
<div style="text-align: center;">
<!--<p>You hereby authorize "${model.client.clientId!}" to access your protected resources.</p>-->
<form id="confirmationForm" name="confirmationForm" action="<@base/>/authz/oauth/v20/authorize" method="post">
<input id="user_oauth_approval" name="user_oauth_approval" value="true" type="hidden"/>
<input class="button btn btn-primary mr-3" name="authorize"
value='<@locale code="apps.oauth.approval.authorize"/>' type="submit"/>
</form>
</div>
</td>
</tr>
</table>
<!--<p>You hereby authorize "${model.client.clientId!}" to access your protected resources.</p>-->
<form id="confirmationForm" name="confirmationForm" action="<@base/>/authz/oauth/v20/authorize" method="post">
<input id="user_oauth_approval" name="user_oauth_approval" value="true" type="hidden"/>
<label><input class="button btn btn-primary mr-3" name="authorize" value='<@locale code="apps.oauth.approval.authorize"/>' type="submit"/></label>
</form>
</#if>
</div>
<div id="footer">
<#include "../layout/footer.ftl"/>
<#include "authorize_footer.ftl">
</div>
</body>
</html>

View File

@ -2,24 +2,24 @@
<!-- javascript js begin -->
<script type="text/javascript">var webContextPath = "<@base />";var webLocale = '<@locale/>';</script>
<#-- jquery base -->
<script src ="<@base />/static/javascript/jquery-3.5.0.min.js" type="text/javascript"></script>
<script src ="<@base />/static/javascript/jquery-3.6.0.min.js" type="text/javascript"></script>
<script src ="<@base />/static/javascript/popper.min.js" type="text/javascript" ></script>
<#-- bootstrap-4.4.1 -->
<link href="<@base />/static/bootstrap-4.4.1/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
<link href="<@base />/static/bootstrap-4.4.1/css/<@theme/>/bootstrap.min.css" type="text/css" rel="stylesheet" />
<script src ="<@base />/static/bootstrap-4.4.1/js/bootstrap.min.js" type="text/javascript" ></script>
<#-- bootstrap-5.1.2 -->
<link href="<@base />/static/bootstrap-5.1.2/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
<link href="<@base />/static/bootstrap-5.1.2/css/<@theme/>/bootstrap.min.css" type="text/css" rel="stylesheet" />
<script src ="<@base />/static/bootstrap-5.1.2/js/bootstrap.min.js" type="text/javascript" ></script>
<#-- font-awesome-4.7.0 -->
<link href="<@base />/static/font-awesome-4.7.0/css/font-awesome.min.css" type="text/css" rel="stylesheet" />
<#-- metadata -->
<script src ="<@base />/static/javascript/jquery.metadata.js" type="text/javascript" ></script>
<#--bootstrap-table-1.16.0-->
<link href="<@base />/static/bootstrap-table-v1.16.0/bootstrap-table.css" type="text/css" rel="stylesheet" />
<script src ="<@base />/static/bootstrap-table-v1.16.0/bootstrap-table.min.js" type="text/javascript" ></script>
<script src ="<@base />/static/bootstrap-table-v1.16.0/bootstrap-table-locale-all.min.js" type="text/javascript" ></script>
<#--bootstrap-table-1.18.3-->
<link href="<@base />/static/bootstrap-table-v1.18.3/bootstrap-table.css" type="text/css" rel="stylesheet" />
<script src ="<@base />/static/bootstrap-table-v1.18.3/bootstrap-table.min.js" type="text/javascript" ></script>
<script src ="<@base />/static/bootstrap-table-v1.18.3/bootstrap-table-locale-all.min.js" type="text/javascript" ></script>
<#-- zTreev 3.5-->
<link href="<@base />/static/zTree-v3.5.40/css/zTreeStyle/zTreeStyle.css" type="text/css" rel="stylesheet"/>
<script src ="<@base />/static/zTree-v3.5.40/js/jquery.ztree.core.js" type="text/javascript" ></script>
<script src ="<@base />/static/zTree-v3.5.40/js/jquery.ztree.excheck.js" type="text/javascript" ></script>
<link href="<@base />/static/zTree-v3.5.46/css/metroStyle/metroStyle.css" type="text/css" rel="stylesheet"/>
<script src ="<@base />/static/zTree-v3.5.46/js/jquery.ztree.core.js" type="text/javascript" ></script>
<script src ="<@base />/static/zTree-v3.5.46/js/jquery.ztree.excheck.js" type="text/javascript" ></script>
<#-- artDialog-5.0.4 -->
<link href="<@base />/static/artDialog-5.0.4/skins/platform.css" type="text/css" rel="stylesheet"/>
<script src ="<@base />/static/artDialog-5.0.4/jquery.artDialog.min.js" type="text/javascript" ></script>
@ -28,10 +28,6 @@
<link href="<@base />/static/datetimepicker-2.5.20/jquery.datetimepicker.css" type="text/css" rel="stylesheet" />
<script src ="<@base />/static/datetimepicker-2.5.20/build/jquery.datetimepicker.full.js" type="text/javascript" ></script>
<script src ="<@base />/static/javascript/jquery.cookie.js" type="text/javascript" ></script>
<#-- multiple-select-1.5.2 -->
<script type="text/javascript" src="<@base />/static/multiple-select-1.5.2/multiple-select.min.js"></script>
<script type="text/javascript" src="<@base />/static/multiple-select-1.5.2/locale/multiple-select-<@locale/>.js"></script>
<link rel="stylesheet" href="<@base />/static/multiple-select-1.5.2/multiple-select.css" type="text/css"/>
<#-- form -->
<script src ="<@base />/static/javascript/jquery.form.js" type="text/javascript" ></script>
<#-- blockUI -->

View File

@ -176,25 +176,25 @@
<table id="tableform">
<tr>
<td>
<ul id="switch_tab" class="switch_tab">
<li id="normalLogin" class="switch_tab_class switch_tab_current">
<ul id="switch_tab" class="switch_tab" style="width: 360px;">
<li id="normalLogin" class="switch_tab_class switch_tab_current col-md-4">
<a href="javascript:void(0);">
<@locale code="login.text.login.normal"/>
</a>
</li>
<!--
<li id="tfaLogin" class="switch_tab_class">
<li id="tfaLogin" class="switch_tab_class col-md-4">
<a href="javascript:void(0);">
<@locale code="login.text.login.twofactor"/>
</a>
</li>-->
<!---->
<li id="mobileLogin" class="switch_tab_class">
<li id="mobileLogin" class="switch_tab_class col-md-4">
<a href="javascript:void(0);">
<@locale code="login.text.login.mobile"/>
</a>
</li>
<li id="qrcodelogin" class="switch_tab_class">
<li id="qrcodelogin" class="switch_tab_class col-md-4">
<a href="javascript:void(0);">
<@locale code="login.text.login.qrcode"/>
</a>

View File

@ -93,7 +93,7 @@
<tr>
<th><@locale code="userinfo.gender" /></th>
<td>
<select class="form-control" name="gender" class="gender">
<select class="form-control form-select" name="gender" class="gender">
<option value="1" <#if 1==model.gender>selected</#if> ><@locale code="userinfo.gender.female" /></option>
<option value="2" <#if 2==model.gender>selected</#if> ><@locale code="userinfo.gender.male" /></option>
</select>
@ -104,7 +104,7 @@
<th><@locale code="userinfo.married" /></th>
<td>
<select class="form-control" name="married" class="select_t">
<select class="form-control form-select" name="married" >
<option value="0" <#if 0==model.married>selected</#if> ><@locale code="userinfo.married.unknown" /></option>
<option value="1" <#if 1==model.married>selected</#if> ><@locale code="userinfo.married.single" /></option>
<option value="2" <#if 2==model.married>selected</#if> ><@locale code="userinfo.married.married" /></option>
@ -125,7 +125,7 @@
<tr>
<th><@locale code="userinfo.idtype" /></th>
<td>
<select class="form-control" name="idType" class="select_t">
<select class="form-control form-select" name="idType">
<option value="0" <#if 0==model.idType>selected</#if> ><@locale code="userinfo.idtype.unknown" /></option>
<option value="1" <#if 1==model.idType>selected</#if> ><@locale code="userinfo.idtype.idcard" /></option>
<option value="2" <#if 2==model.idType>selected</#if> ><@locale code="userinfo.idtype.passport" /></option>
@ -151,7 +151,7 @@
<tr>
<th><@locale code="userinfo.preferredLanguage" /></th>
<td>
<select class="form-control" name="preferredLanguage" id="preferredLanguage">
<select class="form-control form-select" name="preferredLanguage" id="preferredLanguage">
<option value="en_US" <#if 'en_US'==model.preferredLanguage>selected</#if> >English</option>
<option value="nl_NL" <#if 'nl_NL'==model.preferredLanguage>selected</#if> >Dutch</option>
@ -174,7 +174,7 @@
<tr>
<th><@locale code="userinfo.timeZone" /></th>
<td>
<select class="form-control" id="timeZone" name="timeZone" tabindex="61">
<select class="form-control form-select" id="timeZone" name="timeZone" tabindex="61">
<option value="Pacific/Kiritimati" <#if 'Pacific/Kiritimati'==model.timeZone>selected</#if>>(GMT+14:00) Line Islands Time (Pacific/Kiritimati)</option>
<option value="Pacific/Chatham" <#if 'Pacific/Chatham'==model.timeZone>selected</#if>>(GMT+13:45) Chatham Daylight Time (Pacific/Chatham)</option>
<option value="Pacific/Auckland" <#if 'Pacific/Auckland'==model.timeZone>selected</#if>>(GMT+13:00) New Zealand Daylight Time (Pacific/Auckland)</option>
@ -281,7 +281,7 @@
<tr>
<th><@locale code="userinfo.locale" /></th>
<td>
<select class="form-control" name="locale" id="locale">
<select class="form-control form-select" name="locale" id="locale">
<option value="en_US" <#if 'en_US'==model.locale>selected</#if> >English</option>
<option value="nl_NL" <#if 'nl_NL'==model.locale>selected</#if> >Dutch</option>
@ -437,7 +437,7 @@
<tr>
<th><@locale code="userinfo.workCountry" /></th>
<td>
<select class="form-control" id="workCountry" name="workCountry">
<select class="form-control form-select" id="workCountry" name="workCountry">
<option value="AFG" <#if 'AFG'==model.workCountry>selected</#if>>Afghanistan</option>
<option value="ALA" <#if 'ALA'==model.workCountry>selected</#if>>Åland Islands</option>
<option value="ALB" <#if 'ALB'==model.workCountry>selected</#if>>Albania</option>
@ -759,7 +759,7 @@
<tr>
<th><@locale code="userinfo.homeCountry" /></th>
<td>
<select class="form-control" id="homeCountry" name="homeCountry">
<select class="form-control form-select" id="homeCountry" name="homeCountry">
<option value="AFG" <#if 'AFG'==model.homeCountry>selected</#if>>Afghanistan</option>
<option value="ALA" <#if 'ALA'==model.homeCountry>selected</#if>>Åland Islands</option>
<option value="ALB" <#if 'ALB'==model.homeCountry>selected</#if>>Albania</option>

View File

@ -34,7 +34,7 @@
<tr>
<th><@locale code="userinfo.authnType" />:</th>
<td nowrap>
<select class="form-control" name="authnType" id="authnType">
<select class="form-control form-select" name="authnType" id="authnType">
<option value="1" <#if 0==model.authnType >selected</#if> ><@locale code="button.text.select" /></option>
<option value="1" <#if 1==model.authnType >selected</#if> ><@locale code="userinfo.authnType.authnType.1" /></option>
<!--
@ -85,7 +85,7 @@
<tr>
<th><@locale code="userinfo.theme" />:</th>
<td nowrap>
<select class="form-control" name="theme" id="theme">
<select class="form-control form-select" name="theme" id="theme">
<option value="default" <#if "default"==model.theme >selected</#if> ><@locale code="userinfo.theme.default" /></option>
<option value="minty" <#if "minty" ==model.theme >selected</#if> ><@locale code="userinfo.theme.minty" /></option>
<option value="pulse" <#if "pulse" ==model.theme >selected</#if> ><@locale code="userinfo.theme.pulse" /></option>

View File

@ -32,7 +32,7 @@
<tr>
<th><@locale code="apps.adapter.protocol" /></th>
<td nowrap>
<select name="protocol" class="form-control">
<select name="protocol" class="form-control form-select">
<option value="" selected>Select</option>
<option value="OAuth_v2.0"><@locale code="apps.protocol.oauth2.0" /></option>
<option value="SAML_v2.0"><@locale code="apps.protocol.saml2.0" /></option>

View File

@ -36,7 +36,7 @@
</td>
<th><@locale code="apps.logoutType"/></th>
<td>
<select id="logoutType" name="logoutType" class="form-control" >
<select id="logoutType" name="logoutType" class="form-control form-select" >
<option value="0" selected ><@locale code="apps.logoutType.none"/></option>
<option value="1" ><@locale code="apps.logoutType.back_channel"/></option>
<option value="2" ><@locale code="apps.logoutType.front_channel"/></option>
@ -77,7 +77,7 @@
<tr>
<th><@locale code="apps.visible"/></th>
<td>
<select id="visible" name="visible" class="form-control" >
<select id="visible" name="visible" class="form-control form-select" >
<option value="0" ><@locale code="apps.visible.hidden"/></option>
<option value="1" selected><@locale code="apps.visible.all"/></option>
<option value="2" ><@locale code="apps.visible.internet"/></option>
@ -92,7 +92,7 @@
<tr>
<th><@locale code="apps.isAdapter" /></th>
<td>
<select id="isAdapter" name="isAdapter" class="form-control" >
<select id="isAdapter" name="isAdapter" class="form-control form-select" >
<option value="0" selected><@locale code="apps.isAdapter.no" /></option>
<option value="1"><@locale code="apps.isAdapter.yes" /></option>
</select>

View File

@ -36,7 +36,7 @@
</td>
<th><@locale code="apps.logoutType"/></th>
<td>
<select id="logoutType" name="logoutType" class="form-control" >
<select id="logoutType" name="logoutType" class="form-control form-select" >
<option value="0" <#if 0==model.logoutType!>selected</#if> ><@locale code="apps.logoutType.none"/></option>
<option value="1" <#if 1==model.logoutType!>selected</#if> ><@locale code="apps.logoutType.back_channel"/></option>
<option value="2" <#if 2==model.logoutType!>selected</#if> ><@locale code="apps.logoutType.front_channel"/></option>
@ -75,7 +75,7 @@
<tr>
<th><@locale code="apps.visible"/></th>
<td>
<select id="visible" name="visible" class="form-control">
<select id="visible" name="visible" class="form-control form-select">
<option value="0" <#if 0==model.visible!>selected</#if> ><@locale code="apps.visible.hidden"/></option>
<option value="1" <#if 1==model.visible!>selected</#if> ><@locale code="apps.visible.all"/></option>
<option value="2" <#if 2==model.visible!>selected</#if> ><@locale code="apps.visible.internet"/></option>
@ -95,7 +95,7 @@
<tr>
<th><@locale code="apps.isAdapter" /></th>
<td>
<select id="isAdapter" name="isAdapter" class="form-control">
<select id="isAdapter" name="isAdapter" class="form-control form-select">
<option value="0" <#if 0==model.isAdapter>selected</#if> ><@locale code="apps.isAdapter.no"/></option>
<option value="1" <#if 1==model.isAdapter>selected</#if> ><@locale code="apps.isAdapter.yes"/></option>
</select>

View File

@ -155,7 +155,7 @@
<tr>
<td width="120px"><@locale code="apps.protocol"/></td>
<td width="374px">
<select name="protocol" class="form-control">
<select name="protocol" class="form-control form-select">
<option value="" selected>Select</option>
<option value="OAuth_v2.0"><@locale code="apps.protocol.oauth2.0" /></option>
<option value="SAML_v2.0"><@locale code="apps.protocol.saml2.0" /></option>

View File

@ -71,7 +71,7 @@ $(function(){
<tr id="systemconfigure" style="display:none">
<th><@locale code="apps.systemUserAttr"/></th>
<td colspan="3">
<select class="form-control" id="systemUserAttr" name="systemUserAttr">
<select class="form-control form-select" id="systemUserAttr" name="systemUserAttr">
<option value="uid">
<@locale code="userinfo.id"/></option>
<option value="employeeNumber">

View File

@ -57,7 +57,7 @@ $(function(){
<tr>
<th style="width:15%;"><@locale code="apps.credential"/></th>
<td style="width:35%;">
<select id="credential" name="credential" class="form-control" >
<select id="credential" name="credential" class="form-control form-select" >
<option value="3" <#if 3==model.credential >selected</#if> >
<@locale code="apps.credential.user-defined"/>
</option>
@ -76,7 +76,7 @@ $(function(){
<tr id="systemconfigure" <#if 1!=model.credential > style="display:none"</#if> >
<th><@locale code="apps.systemUserAttr"/></th>
<td colspan="3">
<select id="systemUserAttr" name="systemUserAttr" class="form-control" >
<select id="systemUserAttr" name="systemUserAttr" class="form-control form-select" >
<option value="uid" <#if 'uid'==model.systemUserAttr >selected</#if> >
<@locale code="userinfo.id"/></option>
<option value="employeeNumber" <#if 'employeeNumber'==model.systemUserAttr >selected</#if> >

View File

@ -92,7 +92,7 @@ $(function(){
<tr id="systemconfigure" style="display:none">
<th><@locale code="apps.systemUserAttr"/></th>
<td colspan="3">
<select id="systemUserAttr" name="systemUserAttr" class="form-control" >
<select id="systemUserAttr" name="systemUserAttr" class="form-control form-select" >
<option value="userId">
<@locale code="userinfo.id"/></option>
<option value="employeeNumber">

View File

@ -68,7 +68,7 @@ $(function(){
<tr>
<th><@locale code="apps.credential"/></th>
<td >
<select id="credential" name="credential" class="form-control" >
<select id="credential" name="credential" class="form-control form-select" >
<option value="3" <#if 3==model.credential >selected</#if> >
<@locale code="apps.credential.user-defined"/>
</option>
@ -95,7 +95,7 @@ $(function(){
<tr id="systemconfigure" <#if 1!=model.credential> style="display:none"</#if> >
<th><@locale code="apps.systemUserAttr"/></th>
<td colspan="3">
<select id="systemUserAttr" name="systemUserAttr" class="form-control">
<select id="systemUserAttr" name="systemUserAttr" class="form-control form-select">
<option value="userId" <#if 'userId'==model.systemUserAttr>selected</#if> >
<@locale code="userinfo.id"/></option>
<option value="employeeNumber" <#if 'employeeNumber'==model.systemUserAttr>selected</#if> >

View File

@ -34,7 +34,7 @@
<tr>
<th ><@locale code="apps.jwt.tokenType" /></th>
<td >
<select id="tokenType" name="tokenType" class="form-control">
<select id="tokenType" name="tokenType" class="form-control form-select">
<option value="POST">安全令牌(TOKEN POST)</option>
<option value="LTPA">轻量级认证(LTPA COOKIE)</option>
</select>
@ -47,7 +47,7 @@
<tr>
<th style="width:15%;"><@locale code="apps.jwt.algorithm" /></th>
<td style="width:35%;">
<select id="algorithm" name="algorithm" class="form-control">
<select id="algorithm" name="algorithm" class="form-control form-select">
<option value="DES">DES</option>
<option value="DESede">DESede</option>
<option value="Blowfish">Blowfish</option>

View File

@ -36,7 +36,7 @@
<tr>
<th ><@locale code="apps.jwt.tokenType" /></th>
<td >
<select id="tokenType" name="tokenType" class="form-control">
<select id="tokenType" name="tokenType" class="form-control form-select">
<option value="POST" <#if 'POST'==model.tokenType>selected</#if> >安全令牌(TOKEN POST)</option>
<option value="LTPA" <#if 'LTPA'==model.tokenType>selected</#if> >轻量级认证(LTPA COOKIE)</option>
</select>
@ -50,7 +50,7 @@
<tr>
<th style="width:15%;"><@locale code="apps.jwt.algorithm" /></th>
<td style="width:35%;">
<select id="algorithm" name="algorithm" class="form-control" >
<select id="algorithm" name="algorithm" class="form-control form-select" >
<option value="DES" <#if 'DES'==model.algorithm>selected</#if> >DES</option>
<option value="DESede" <#if 'DESede'==model.algorithm>selected</#if>>DESede</option>
<option value="Blowfish" <#if 'Blowfish'==model.algorithm>selected</#if>>Blowfish</option>

View File

@ -99,7 +99,7 @@
<tr>
<th><@locale code="apps.oauth.connect.idTokenSigningAlgorithm" /></th>
<td >
<select id="idTokenSigningAlgorithm" name="idTokenSigningAlgorithm" class="form-control" >
<select id="idTokenSigningAlgorithm" name="idTokenSigningAlgorithm" class="form-control form-select" >
<option value="none" selected>No digital signature</option>
<option value="HS256" >HMAC using SHA-256 hash algorithm</option>
<option value="HS384" >HMAC using SHA-384 hash algorithm</option>
@ -114,7 +114,7 @@
</td>
<th><@locale code="apps.oauth.connect.userInfoSigningAlgorithm" /></th>
<td >
<select id="userInfoSigningAlgorithm" name="userInfoSigningAlgorithm" class="form-control" >
<select id="userInfoSigningAlgorithm" name="userInfoSigningAlgorithm" class="form-control form-select" >
<option value="none" selected>No digital signature</option>
<option value="HS256" >HMAC using SHA-256 hash algorithm</option>
<option value="HS384" >HMAC using SHA-384 hash algorithm</option>
@ -137,7 +137,7 @@
<tr>
<th><@locale code="apps.oauth.connect.idTokenEncryptedAlgorithm" /></th>
<td >
<select id="idTokenEncryptedAlgorithm" name="idTokenEncryptedAlgorithm" class="form-control" >
<select id="idTokenEncryptedAlgorithm" name="idTokenEncryptedAlgorithm" class="form-control form-select" >
<option value="none" selected >No encryption</option>
<option value="RSA1_5" >RSAES-PKCS1-V1_5</option>
<option value="RSA-OAEP" >RSAES using Optimal Asymmetric Encryption Padding (OAEP)</option>
@ -152,7 +152,7 @@
</td>
<th><@locale code="apps.oauth.connect.userInfoEncryptedAlgorithm" /></th>
<td >
<select id="userInfoEncryptedAlgorithm" name="userInfoEncryptedAlgorithm" class="form-control" >
<select id="userInfoEncryptedAlgorithm" name="userInfoEncryptedAlgorithm" class="form-control form-select" >
<option value="none" selected >No encryption</option>
<option value="RSA1_5" >RSAES-PKCS1-V1_5</option>
<option value="RSA-OAEP" >RSAES using Optimal Asymmetric Encryption Padding (OAEP)</option>
@ -170,7 +170,7 @@
<tr>
<th><@locale code="apps.oauth.connect.idTokenEncryptionMethod" /></th>
<td >
<select id="idTokenEncryptionMethod" name="idTokenEncryptionMethod" class="form-control" >
<select id="idTokenEncryptionMethod" name="idTokenEncryptionMethod" class="form-control form-select" >
<option value="none" selected>No encryption</option>
<option value="A128CBC+HS256" >Composite Authenticated Encryption algorithm using AES in Cipher Block Chaining (CBC) mode with PKCS #5 padding with an integrity calculation using HMAC SHA-256, using a 256 bit CMK (and 128 bit CEK)</option>
<option value="A256CBC+HS512" >Composite Authenticated Encryption algorithm using AES in CBC mode with PKCS #5 padding with an integrity calculation using HMAC SHA-512, using a 512 bit CMK (and 256 bit CEK)</option>
@ -180,7 +180,7 @@
</td>
<th><@locale code="apps.oauth.connect.userInfoEncryptionMethod" /></th>
<td >
<select id="userInfoEncryptionMethod" name="userInfoEncryptionMethod" class="form-control" >
<select id="userInfoEncryptionMethod" name="userInfoEncryptionMethod" class="form-control form-select" >
<option value="none" selected>No encryption</option>
<option value="A128CBC+HS256" >Composite Authenticated Encryption algorithm using AES in Cipher Block Chaining (CBC) mode with PKCS #5 padding with an integrity calculation using HMAC SHA-256, using a 256 bit CMK (and 128 bit CEK)</option>
<option value="A256CBC+HS512" >Composite Authenticated Encryption algorithm using AES in CBC mode with PKCS #5 padding with an integrity calculation using HMAC SHA-512, using a 512 bit CMK (and 256 bit CEK)</option>
@ -192,7 +192,7 @@
<tr>
<th><@locale code="apps.oauth.approvalPrompt" /></th>
<td >
<select id="approvalPrompt" name="approvalPrompt" class="form-control" >
<select id="approvalPrompt" name="approvalPrompt" class="form-control form-select" >
<option value="force" selected>
<@locale code="apps.oauth.approvalPrompt.force" /></option>
<option value="auto" >

View File

@ -98,7 +98,7 @@
<tr>
<th><@locale code="apps.oauth.connect.idTokenSigningAlgorithm" /></th>
<td >
<select id="idTokenSigningAlgorithm" name="idTokenSigningAlgorithm" class="form-control">
<select id="idTokenSigningAlgorithm" name="idTokenSigningAlgorithm" class="form-control form-select">
<option value="none" <#if 'none' ==model.idTokenSigningAlgorithm >selected</#if>>No digital signature</option>
<option value="HS256" <#if 'HS256'==model.idTokenSigningAlgorithm >selected</#if>>HMAC using SHA-256 hash algorithm</option>
<option value="HS384" <#if 'HS384'==model.idTokenSigningAlgorithm >selected</#if>>HMAC using SHA-384 hash algorithm</option>
@ -113,7 +113,7 @@
</td>
<th><@locale code="apps.oauth.connect.userInfoSigningAlgorithm" /></th>
<td >
<select id="userInfoSigningAlgorithm" name="userInfoSigningAlgorithm" class="form-control">
<select id="userInfoSigningAlgorithm" name="userInfoSigningAlgorithm" class="form-control form-select">
<option value="none" <#if 'none' ==model.userInfoSigningAlgorithm >selected</#if>>No digital signature</option>
<option value="HS256" <#if 'HS256'==model.userInfoSigningAlgorithm >selected</#if>>HMAC using SHA-256 hash algorithm</option>
<option value="HS384" <#if 'HS384'==model.userInfoSigningAlgorithm >selected</#if>>HMAC using SHA-384 hash algorithm</option>
@ -136,7 +136,7 @@
<tr>
<th><@locale code="apps.oauth.connect.idTokenEncryptedAlgorithm" /></th>
<td >
<select id="idTokenEncryptedAlgorithm" name="idTokenEncryptedAlgorithm" class="form-control">
<select id="idTokenEncryptedAlgorithm" name="idTokenEncryptedAlgorithm" class="form-control form-select">
<option value="none" <#if 'none'==model.idTokenEncryptedAlgorithm >selected</#if> >No encryption</option>
<option value="RSA1_5" <#if 'RSA1_5'==model.idTokenEncryptedAlgorithm >selected</#if> >RSAES-PKCS1-V1_5</option>
<option value="RSA-OAEP" <#if 'RSA-OAEP'==model.idTokenEncryptedAlgorithm >selected</#if>>RSAES using Optimal Asymmetric Encryption Padding (OAEP)</option>
@ -151,7 +151,7 @@
</td>
<th><@locale code="apps.oauth.connect.userInfoEncryptedAlgorithm" /></th>
<td >
<select id="userInfoEncryptedAlgorithm" name="userInfoEncryptedAlgorithm" class="form-control">
<select id="userInfoEncryptedAlgorithm" name="userInfoEncryptedAlgorithm" class="form-control form-select">
<option value="none" <#if 'none'==model.userInfoEncryptedAlgorithm >selected</#if> >No encryption</option>
<option value="RSA1_5" <#if 'RSA1_5'==model.userInfoEncryptedAlgorithm >selected</#if> >RSAES-PKCS1-V1_5</option>
<option value="RSA-OAEP" <#if 'RSA-OAEP'==model.userInfoEncryptedAlgorithm >selected</#if>>RSAES using Optimal Asymmetric Encryption Padding (OAEP)</option>
@ -169,7 +169,7 @@
<tr>
<th><@locale code="apps.oauth.connect.idTokenEncryptionMethod" /></th>
<td >
<select id="idTokenEncryptionMethod" name="idTokenEncryptionMethod" class="form-control">
<select id="idTokenEncryptionMethod" name="idTokenEncryptionMethod" class="form-control form-select">
<option value="none" <#if 'none'==model.idTokenEncryptionMethod >selected</#if>>No encryption</option>
<option value="A128CBC+HS256" <#if 'A128CBC+HS256'==model.idTokenEncryptionMethod >selected</#if>>Composite Authenticated Encryption algorithm using AES in Cipher Block Chaining (CBC) mode with PKCS #5 padding with an integrity calculation using HMAC SHA-256, using a 256 bit CMK (and 128 bit CEK)</option>
<option value="A256CBC+HS512" <#if 'A256CBC+HS512'==model.idTokenEncryptionMethod >selected</#if>>Composite Authenticated Encryption algorithm using AES in CBC mode with PKCS #5 padding with an integrity calculation using HMAC SHA-512, using a 512 bit CMK (and 256 bit CEK)</option>
@ -179,7 +179,7 @@
</td>
<th><@locale code="apps.oauth.connect.userInfoEncryptionMethod" /></th>
<td >
<select id="userInfoEncryptionMethod" name="userInfoEncryptionMethod" class="form-control">
<select id="userInfoEncryptionMethod" name="userInfoEncryptionMethod" class="form-control form-select">
<option value="none" <#if 'none'==model.userInfoEncryptionMethod >selected</#if>>No encryption</option>
<option value="A128CBC+HS256" <#if 'A128CBC+HS256'==model.userInfoEncryptionMethod >selected</#if>>Composite Authenticated Encryption algorithm using AES in Cipher Block Chaining (CBC) mode with PKCS #5 padding with an integrity calculation using HMAC SHA-256, using a 256 bit CMK (and 128 bit CEK)</option>
<option value="A256CBC+HS512" <#if 'A256CBC+HS512'==model.userInfoEncryptionMethod >selected</#if>>Composite Authenticated Encryption algorithm using AES in CBC mode with PKCS #5 padding with an integrity calculation using HMAC SHA-512, using a 512 bit CMK (and 256 bit CEK)</option>
@ -191,7 +191,7 @@
<tr>
<th><@locale code="apps.oauth.approvalPrompt" /></th>
<td >
<select id="approvalPrompt" name="approvalPrompt" class="form-control">
<select id="approvalPrompt" name="approvalPrompt" class="form-control form-select">
<option value="force" <#if ""==model.approvalPrompt?default("") >selected</#if>>
<@locale code="apps.oauth.approvalPrompt.force" /></option>
<option value="auto" <#if 'auto'==model.approvalPrompt >selected</#if>>

View File

@ -67,7 +67,7 @@
<tr>
<th><@locale code="apps.saml.signature" /></th>
<td>
<select id="signature" name="signature" class="form-control" >
<select id="signature" name="signature" class="form-control form-select" >
<option value="RSAwithSHA1" selected>RSAwithSHA1</option>
<option value="RSAwithSHA256" >RSAwithSHA256</option>
<option value="RSAwithSHA384" >RSAwithSHA384</option>
@ -89,7 +89,7 @@
</td>
<th><@locale code="apps.saml.digestMethod" /></th>
<td>
<select id="digestMethod" name="digestMethod" class="form-control" >
<select id="digestMethod" name="digestMethod" class="form-control form-select" >
<option value="MD5" >MD5</option>
<option value="SHA1" selected>SHA1</option>
<option value="SHA256" >SHA256</option>
@ -103,7 +103,7 @@
<th><@locale code="apps.saml.nameidFormat" /></th>
<td>
<select id="nameidFormat" name="nameidFormat" class="form-control" >
<select id="nameidFormat" name="nameidFormat" class="form-control form-select" >
<option value="persistent" selected>persistent</option>
<option value="transient">transient</option>
<option value="emailAddress">emailAddress</option>
@ -117,7 +117,7 @@
</td>
<th><@locale code="apps.saml.nameIdConvert" /></th>
<td>
<select id="nameIdConvert" name="nameIdConvert" class="form-control" >
<select id="nameIdConvert" name="nameIdConvert" class="form-control form-select" >
<option value="0" selected>
<@locale code="apps.saml.nameIdConvert.original" /></option>
<option value="1">
@ -132,7 +132,7 @@
<tr>
<th style="width:15%;"><@locale code="apps.saml.binding" /></th>
<td style="width:35%;">
<select id="binding" name="binding" class="form-control" >
<select id="binding" name="binding" class="form-control form-select" >
<option value="Redirect-Post" selected>Redirect-Post</option>
<option value="Post-Post" >Post-Post</option>
<option value="IdpInit-Post" >IdpInit-Post</option>
@ -151,7 +151,7 @@
<tr>
<th><@locale code="apps.saml.fileType" /></th>
<td>
<select id="fileType" name="fileType" class="form-control" >
<select id="fileType" name="fileType" class="form-control form-select" >
<option value="certificate"><@locale code="apps.saml.fileType.certificate" /></option>
<option value="metadata_file" selected><@locale code="apps.saml.fileType.metadata.file" /></option>
<option value="metadata_url" ><@locale code="apps.saml.fileType.metadata.url" /></option>
@ -173,7 +173,7 @@
<tr>
<th><@locale code="apps.saml.encrypted" /></th>
<td >
<select id="encrypted" name="encrypted" class="form-control" >
<select id="encrypted" name="encrypted" class="form-control form-select" >
<option value="0" selected>
<@locale code="apps.saml.encrypted.no" /></option>
<option value="1">

View File

@ -71,7 +71,7 @@
<tr>
<th><@locale code="apps.saml.signature" /></th>
<td>
<select id="signature" name="signature" class="form-control" >
<select id="signature" name="signature" class="form-control form-select" >
<option value="RSAwithSHA1" <#if 'RSAwithSHA1'==model.signature>selected</#if>>RSAwithSHA1</option>
<option value="RSAwithSHA256" <#if 'RSAwithSHA256'==model.signature>selected</#if>>RSAwithSHA256</option>
<option value="RSAwithSHA384" <#if 'RSAwithSHA384'==model.signature>selected</#if>>RSAwithSHA384</option>
@ -93,7 +93,7 @@
</td>
<th><@locale code="apps.saml.digestMethod" /></th>
<td>
<select id="digestMethod" name="digestMethod" class="form-control" >
<select id="digestMethod" name="digestMethod" class="form-control form-select" >
<option value="MD5" <#if 'MD5'==model.digestMethod>selected</#if>>MD5</option>
<option value="SHA1" <#if 'SHA1'==model.digestMethod>selected</#if>>SHA1</option>
<option value="SHA256" <#if 'SHA256'==model.digestMethod>selected</#if>>SHA256</option>
@ -107,7 +107,7 @@
<tr>
<th style="width:15%;"><@locale code="apps.saml.nameidFormat" /></th>
<td style="width:35%;">
<select id="nameidFormat" name="nameidFormat" class="form-control" >
<select id="nameidFormat" name="nameidFormat" class="form-control form-select" >
<option value="persistent" <#if 'persistent'==model.nameidFormat>selected</#if>>persistent</option>
<option value="transient" <#if 'transient'==model.nameidFormat>selected</#if>>transient</option>
<option value="emailAddress" <#if 'emailAddress'==model.nameidFormat>selected</#if>>emailAddress</option>
@ -120,7 +120,7 @@
</td>
<th style="width:15%;"><@locale code="apps.saml.nameIdConvert" /></th>
<td style="width:35%;">
<select id="nameIdConvert" name="nameIdConvert" class="form-control" >
<select id="nameIdConvert" name="nameIdConvert" class="form-control form-select" >
<option value="0" <#if 0==model.nameIdConvert>selected</#if>>
<@locale code="apps.saml.nameIdConvert.original" /></option>
<option value="1" <#if 1==model.nameIdConvert>selected</#if>>
@ -133,7 +133,7 @@
<tr>
<th><@locale code="apps.saml.binding" /></th>
<td>
<select id="binding" name="binding" class="form-control" >
<select id="binding" name="binding" class="form-control form-select" >
<option value="Redirect-Post" <#if 'Redirect-Post'==model.binding>selected</#if>>Redirect-Post</option>
<option value="Post-Post" <#if 'Post-Post'==model.binding>selected</#if>>Post-Post</option>
<option value="IdpInit-Post" <#if 'IdpInit-Post'==model.binding>selected</#if>>IdpInit-Post</option>
@ -152,7 +152,7 @@
<tr>
<th><@locale code="apps.saml.fileType" /></th>
<td>
<select id="fileType" name="fileType" class="form-control" >
<select id="fileType" name="fileType" class="form-control form-select" >
<option value="certificate" selected><@locale code="apps.saml.fileType.certificate" /></option>
<option value="metadata_file"><@locale code="apps.saml.fileType.metadata.file" /></option>
<option value="metadata_url" ><@locale code="apps.saml.fileType.metadata.url" /></option>
@ -173,7 +173,7 @@
<tr>
<th><@locale code="apps.saml.encrypted" /></th>
<td >
<select id="encrypted" name="encrypted" class="form-control" >
<select id="encrypted" name="encrypted" class="form-control form-select" >
<option value="0" <#if 0==model.encrypted>selected</#if>>
<@locale code="apps.saml.encrypted.no" /></option>
<option value="1" <#if 1==model.encrypted>selected</#if>>

View File

@ -34,7 +34,7 @@
<tr>
<th ><@locale code="apps.tokenbased.tokenType" /></th>
<td >
<select id="tokenType" name="tokenType" class="form-control">
<select id="tokenType" name="tokenType" class="form-control form-select">
<option value="POST">安全令牌(TOKEN POST)</option>
<option value="LTPA">轻量级认证(LTPA COOKIE)</option>
</select>
@ -47,7 +47,7 @@
<tr>
<th style="width:15%;"><@locale code="apps.tokenbased.algorithm" /></th>
<td style="width:35%;">
<select id="algorithm" name="algorithm" class="form-control">
<select id="algorithm" name="algorithm" class="form-control form-select">
<option value="DES">DES</option>
<option value="DESede">DESede</option>
<option value="Blowfish">Blowfish</option>

View File

@ -36,7 +36,7 @@
<tr>
<th ><@locale code="apps.tokenbased.tokenType" /></th>
<td >
<select id="tokenType" name="tokenType" class="form-control">
<select id="tokenType" name="tokenType" class="form-control form-select">
<option value="POST" <#if 'POST'==model.tokenType>selected</#if> >安全令牌(TOKEN POST)</option>
<option value="LTPA" <#if 'LTPA'==model.tokenType>selected</#if> >轻量级认证(LTPA COOKIE)</option>
</select>
@ -50,7 +50,7 @@
<tr>
<th style="width:15%;"><@locale code="apps.tokenbased.algorithm" /></th>
<td style="width:35%;">
<select id="algorithm" name="algorithm" class="form-control" >
<select id="algorithm" name="algorithm" class="form-control form-select" >
<option value="DES" <#if 'DES'==model.algorithm>selected</#if> >DES</option>
<option value="DESede" <#if 'DESede'==model.algorithm>selected</#if>>DESede</option>
<option value="Blowfish" <#if 'Blowfish'==model.algorithm>selected</#if>>Blowfish</option>

View File

@ -134,7 +134,7 @@
<div class="form-group row">
<label class="col-sm-3 col-form-label"><@locale code="login.passwordpolicy.username" /></label>
<div class="col-sm-9">
<select class="form-control" id="username" name="username" >
<select class="form-control form-select" id="username" name="username" >
<option <#if 1==model.username>selected</#if> value="1"><@locale code="common.text.status.enabled"/></option>
<option <#if 0==model.username>selected</#if> value="0"><@locale code="common.text.status.disabled"/></option>
</select>
@ -148,7 +148,7 @@
<label class="col-sm-3 col-form-label"><@locale code="login.passwordpolicy.alphabetical" /></label>
<div class="col-sm-9">
<select class="form-control" id="alphabetical" name="alphabetical" >
<select class="form-control form-select" id="alphabetical" name="alphabetical" >
<option <#if 1==model.alphabetical>selected</#if> value="1"><@locale code="common.text.status.enabled"/></option>
<option <#if 0==model.alphabetical>selected</#if> value="0"><@locale code="common.text.status.disabled"/></option>
</select>
@ -159,7 +159,7 @@
<div class="form-group row">
<label class="col-sm-3 col-form-label"><@locale code="login.passwordpolicy.numerical" /></label>
<div class="col-sm-9">
<select class="form-control" id="numerical" name="numerical" >
<select class="form-control form-select" id="numerical" name="numerical" >
<option <#if 1==model.numerical>selected</#if> value="1"><@locale code="common.text.status.enabled"/></option>
<option <#if 0==model.numerical>selected</#if> value="0"><@locale code="common.text.status.disabled"/></option>
</select>
@ -173,7 +173,7 @@
<label class="col-sm-3 col-form-label"><@locale code="login.passwordpolicy.qwerty" /></label>
<div class="col-sm-9">
<select class="form-control" id="qwerty" name="qwerty" >
<select class="form-control form-select" id="qwerty" name="qwerty" >
<option <#if 1==model.qwerty>selected</#if> value="1"><@locale code="common.text.status.enabled"/></option>
<option <#if 0==model.qwerty>selected</#if> value="0"><@locale code="common.text.status.disabled"/></option>
</select>
@ -185,7 +185,7 @@
<label class="col-sm-3 col-form-label"><@locale code="login.passwordpolicy.dictionary" /></label>
<div class="col-sm-9">
<select class="form-control" id="dictionary" name="dictionary" >
<select class="form-control form-select" id="dictionary" name="dictionary" >
<option <#if 1==model.dictionary>selected</#if> value="1"><@locale code="common.text.status.enabled"/></option>
<option <#if 0==model.dictionary>selected</#if> value="0"><@locale code="common.text.status.disabled"/></option>
</select>

View File

@ -178,7 +178,7 @@ function showOrgsTree() {
<tr>
<th><@locale code="group.dynamic" /></th>
<td nowrap>
<select id="dynamic" name="dynamic" class="form-control">
<select id="dynamic" name="dynamic" class="form-control form-select">
<option value="0" selected ><@locale code="common.text.no" /></option>
<option value="1" ><@locale code="common.text.yes" /></option>
</select>

View File

@ -192,7 +192,7 @@ function showOrgsTree() {
<tr>
<th><@locale code="group.dynamic" /></th>
<td nowrap>
<select id="dynamic" name="dynamic" class="form-control">
<select id="dynamic" name="dynamic" class="form-control form-select">
<option value="0" <#if '0'==model.dynamic>selected</#if> ><@locale code="common.text.no" /></option>
<option value="1" <#if '1'==model.dynamic>selected</#if> ><@locale code="common.text.yes" /></option>
</select>

View File

@ -2,23 +2,26 @@
<!-- javascript js begin -->
<script type="text/javascript">var webContextPath = "<@base />";var webLocale = '<@locale/>';</script>
<#-- jquery base -->
<script src ="<@base />/static/javascript/jquery-3.5.0.min.js" type="text/javascript"></script>
<script src ="<@base />/static/javascript/jquery-3.6.0.min.js" type="text/javascript"></script>
<script src ="<@base />/static/javascript/popper.min.js" type="text/javascript" ></script>
<#-- bootstrap-4.4.1 -->
<link href="<@base />/static/bootstrap-4.4.1/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
<script src ="<@base />/static/bootstrap-4.4.1/js/bootstrap.min.js" type="text/javascript" ></script>
<#-- bootstrap-5.1.2 -->
<link href="<@base />/static/bootstrap-5.1.2/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
<script src ="<@base />/static/bootstrap-5.1.2/js/bootstrap.min.js" type="text/javascript" ></script>
<#-- font-awesome-4.7.0 -->
<link href="<@base />/static/font-awesome-4.7.0/css/font-awesome.min.css" type="text/css" rel="stylesheet" />
<#-- metadata -->
<script src ="<@base />/static/javascript/jquery.metadata.js" type="text/javascript" ></script>
<#--bootstrap-table-1.16.0-->
<link href="<@base />/static/bootstrap-table-v1.16.0/bootstrap-table.css" type="text/css" rel="stylesheet" />
<script src ="<@base />/static/bootstrap-table-v1.16.0/bootstrap-table.min.js" type="text/javascript" ></script>
<script src ="<@base />/static/bootstrap-table-v1.16.0/bootstrap-table-locale-all.min.js" type="text/javascript" ></script>
<#--bootstrap-table-1.18.3-->
<link href="<@base />/static/bootstrap-table-v1.18.3/bootstrap-table.css" type="text/css" rel="stylesheet" />
<script src ="<@base />/static/bootstrap-table-v1.18.3/bootstrap-table.min.js" type="text/javascript" ></script>
<script src ="<@base />/static/bootstrap-table-v1.18.3/bootstrap-table-locale-all.min.js" type="text/javascript" ></script>
<#-- zTreev 3.5-->
<link href="<@base />/static/zTree-v3.5.40/css/zTreeStyle/zTreeStyle.css" type="text/css" rel="stylesheet"/>
<script src ="<@base />/static/zTree-v3.5.40/js/jquery.ztree.core.js" type="text/javascript" ></script>
<script src ="<@base />/static/zTree-v3.5.40/js/jquery.ztree.excheck.js" type="text/javascript" ></script>
<#--
<link href="<@base />/static/zTree-v3.5.46/css/zTreeStyle/zTreeStyle.css" type="text/css" rel="stylesheet"/>
-->
<link href="<@base />/static/zTree-v3.5.46/css/metroStyle/metroStyle.css" type="text/css" rel="stylesheet"/>
<script src ="<@base />/static/zTree-v3.5.46/js/jquery.ztree.core.js" type="text/javascript" ></script>
<script src ="<@base />/static/zTree-v3.5.46/js/jquery.ztree.excheck.js" type="text/javascript" ></script>
<#-- artDialog-5.0.4 -->
<link href="<@base />/static/artDialog-5.0.4/skins/platform.css" type="text/css" rel="stylesheet"/>
<script src ="<@base />/static/artDialog-5.0.4/jquery.artDialog.min.js" type="text/javascript" ></script>
@ -34,15 +37,11 @@
<#-- serializeObject -->
<script src ="<@base />/static/javascript/jquery.serialize-object.min.js" type="text/javascript" ></script>
<script src ="<@base />/static/javascript/jsonformatter.js" type="text/javascript" ></script>
<#-- metisMenu-v3.0.4 -->
<link href="<@base />/static/metisMenu-v3.0.6/css/mm-vertical.css" rel="stylesheet" >
<link href="<@base />/static/metisMenu-v3.0.6/metisMenu.min.css" rel="stylesheet" >
<script src ="<@base />/static/metisMenu-v3.0.6/metisMenu.min.js" type="text/javascript" ></script>
<#-- metisMenu-v3.0.7 -->
<link href="<@base />/static/metisMenu-v3.0.7/css/mm-vertical.css" rel="stylesheet" >
<link href="<@base />/static/metisMenu-v3.0.7/metisMenu.min.css" rel="stylesheet" >
<script src ="<@base />/static/metisMenu-v3.0.7/metisMenu.min.js" type="text/javascript" ></script>
<script src ="<@base />/static/javascript/chart.min.js" type="text/javascript" ></script>
<#-- multiple-select-1.5.2 -->
<script type="text/javascript" src="<@base />/static/multiple-select-1.5.2/multiple-select.min.js"></script>
<script type="text/javascript" src="<@base />/static/multiple-select-1.5.2/locale/multiple-select-<@locale/>.js"></script>
<link rel="stylesheet" href="<@base />/static/multiple-select-1.5.2/multiple-select.css" type="text/css"/>
<#-- platform common script -->
<script src ="<@base />/static/javascript/locale/common.<@locale/>.js" type="text/javascript" ></script>
<script src ="<@base />/static/javascript/platform.common.js" type="text/javascript" ></script>

View File

@ -99,12 +99,6 @@
<span class="fa fa-fw fa-globe fa-lg"></span>
</a>
</li>
<li>
<a class="side-nav-menu" href="<@base />/notices/list/">
<@locale code="navs.notices"/>
<span class="fa fa-fw fa-bell"></span>
</a>
</li>
<li>
<a class="side-nav-menu" href="<@base />/synchronizers/list/">
<@locale code="navs.synchronizers"/>
@ -117,6 +111,12 @@
<span class="fa fa-fw fa-chain"></span>
</a>
</li>
<li>
<a class="side-nav-menu" href="<@base />/notices/list/">
<@locale code="navs.notices"/>
<span class="fa fa-fw fa-bell"></span>
</a>
</li>
<li>
<a class="side-nav-menu" href="<@base />/config/passwordpolicy/forward/">
<@locale code="navs.conf.passwordpolicy"/>

View File

@ -11,46 +11,40 @@
<div class="row justify-content-center">
<div class="col-lg-4 col-md-12 col-xs-12">
<div class="card">
<div class="card-header border-bottom text-center">
<h4 class="card-title">
<!-- <@locale code="login.text.login.normal" /> -->
</h4>
<div class="card-header">
<@locale code="login.text.login.normal" />
</div>
<div class="card-body">
<main class ="form-signin">
<form class="form-horizontal m-t-20 needs-validation" id="loginForm" name="loginForm" action="<@base />/logon.do" method="post" novalidate>
<div class="form-group">
<span class="input-group">
<div class="input-group-prepend">
<span class="input-group-text fa fa-user"></span>
</div>
<div class="row g-3">
<div class="">
<div class="input-group">
<span class="input-group-text fa fa-user"></span>
<input id='j_username' name='username' value="admin" class="form-control" type="text" required="" placeholder="<@locale code="login.text.username"/>">
</span>
</div>
</div>
<div class="form-group">
<span class="input-group">
<div class="input-group-prepend">
<span class="input-group-text fa fa-key"></span>
</div>
<div class="">
<div class="input-group">
<span class="input-group-text fa fa-key"></span>
<input id='j_password' name='password' class="form-control" type="password" required="" placeholder="<@locale code="login.text.password"/>">
</span>
</div>
</div>
<#if true==isCaptcha>
<div class="form-group">
<span class="input-group">
<div class="input-group-prepend">
<span class="input-group-text fa fa-refresh"></span>
</div>
<div class="">
<div class="input-group">
<span class="input-group-text fa fa-refresh"></span>
<input id="j_captcha" name="captcha" class="form-control" value="" type="text" required="" placeholder="<@locale code="login.text.captcha"/>">
<img id="j_captchaimg" class="captcha-image" src="<@base/>/captcha" />
</span>
</div>
</div>
</#if>
<div class="form-group text-center m-t-20">
<input type="hidden" name="authType" value="normal" />
<input type='hidden' id="sessionid" name="sessionId" value="${sessionid}" />
<button id="loginSubmit" class="button btn-primary btn btn-common btn-block" type="submit">
<button id="loginSubmit" class="w-100 btn btn-lg btn-primary" type="submit">
<@locale code="login.button.login" />
</button>
</div>
@ -59,7 +53,9 @@
<div class="error" ><span>${loginErrorMessage!''}</span></div>
</div>
</#if>
</div>
</form>
</main>
</div>
</div>
</div>

View File

@ -41,7 +41,7 @@
<tr>
<th><@locale code="import.update.exist" /> </th>
<td>
<select name="updateExist" id="updateExist" class="form-control" >
<select name="updateExist" id="updateExist" class="form-control form-select" >
<option value="no" selected > <@locale code="common.text.no" /></option>
<option value="yes"> <@locale code="common.text.yes" /> </option>
</select>

View File

@ -63,7 +63,7 @@ $(function () {
<tr>
<th><@locale code="resource.resourceType" /></th>
<td nowrap>
<select id="resourceType" name="resourceType" class="form-control" >
<select id="resourceType" name="resourceType" class="form-control form-select" >
<option value="MENU" selected ><@locale code="resource.resourceType.Menu" /></option>
<option value="ELEMENT" ><@locale code="resource.resourceType.Element" /></option>
<option value="BUTTON" ><@locale code="resource.resourceType.Button" /></option>

View File

@ -47,7 +47,7 @@
<tr>
<th><@locale code="resource.resourceType" /></th>
<td nowrap>
<select id="resourceType" name="resourceType" class="form-control" >
<select id="resourceType" name="resourceType" class="form-control form-select" >
<option value="MENU" <#if 'MENU'==model.resourceType>selected</#if> ><@locale code="resource.resourceType.Menu" /></option>
<option value="ELEMENT" <#if 'ELEMENT'==model.resourceType>selected</#if> ><@locale code="resource.resourceType.Element" /></option>
<option value="BUTTON" <#if 'BUTTON'==model.resourceType>selected</#if> ><@locale code="resource.resourceType.Button" /></option>

View File

@ -178,7 +178,7 @@ function showOrgsTree() {
<tr>
<th><@locale code="role.dynamic" /></th>
<td nowrap>
<select id="dynamic" name="dynamic" class="form-control">
<select id="dynamic" name="dynamic" class="form-control form-select">
<option value="0" selected ><@locale code="common.text.no" /></option>
<option value="1" ><@locale code="common.text.yes" /></option>
</select>

View File

@ -192,7 +192,7 @@ function showOrgsTree() {
<tr>
<th><@locale code="role.dynamic" /></th>
<td nowrap>
<select id="dynamic" name="dynamic" class="form-control">
<select id="dynamic" name="dynamic" class="form-control form-select">
<option value="0" <#if '0'==model.dynamic>selected</#if> ><@locale code="common.text.no" /></option>
<option value="1" <#if '1'==model.dynamic>selected</#if> ><@locale code="common.text.yes" /></option>
</select>

View File

@ -75,7 +75,7 @@
<td><@locale code="userinfo.userType" /></td>
<td style="width:35%;">
<select name="userType" class="form-control" >
<select name="userType" class="form-control form-select" >
<option value="EMPLOYEE" selected><@locale code="userinfo.userType.employee" /></option>
<option value="CONTRACTOR" ><@locale code="userinfo.userType.contractor" /></option>
<option value="CUSTOMER" ><@locale code="userinfo.userType.customer" /></option>
@ -89,7 +89,7 @@
</td>
<td><@locale code="userinfo.userstate" /></td>
<td style="width:35%;">
<select name="userState" class="form-control" >
<select name="userState" class="form-control form-select" >
<option value="RESIDENT" selected ><@locale code="userinfo.userstate.resident" /></option>
<option value="WITHDRAWN" ><@locale code="userinfo.userstate.withdrawn" /></option>
<option value="RETIREE" ><@locale code="userinfo.userstate.retiree" /></option>
@ -159,7 +159,7 @@
<tr>
<td><@locale code="userinfo.preferredLanguage" /></td>
<td>
<select class="form-control" name="preferredLanguage" id="preferredLanguage">
<select class="form-control form-select" name="preferredLanguage" id="preferredLanguage">
<option value="" selected="selected">Language</option>
<option value="en_US" >English</option>
<option value="nl_NL" >Dutch</option>
@ -180,7 +180,7 @@
</td>
<td><@locale code="userinfo.timeZone" /></td>
<td nowrap >
<select class="form-control" id="timeZone" name="timeZone" tabindex="61">
<select class="form-control form-select" id="timeZone" name="timeZone" tabindex="61">
<option value="Pacific/Kiritimati" >(GMT+14:00) Line Islands Time (Pacific/Kiritimati)</option>
<option value="Pacific/Chatham" >(GMT+13:45) Chatham Daylight Time (Pacific/Chatham)</option>
<option value="Pacific/Auckland" >(GMT+13:00) New Zealand Daylight Time (Pacific/Auckland)</option>
@ -403,7 +403,7 @@
<tr>
<td style="width:15%;"><@locale code="userinfo.idtype" /></td>
<td style="width:35%;">
<select name="idType" class="form-control" >
<select name="idType" class="form-control form-select" >
<option value="UNKNOWN" selected ><@locale code="userinfo.idtype.unknown" /></option>
<option value="IDCARD" ><@locale code="userinfo.idtype.idcard" /></option>
<option value="PASSPORT" ><@locale code="userinfo.idtype.passport" /></option>
@ -422,7 +422,7 @@
<td><@locale code="userinfo.married" /></td>
<td>
<select name="married" class="form-control" >
<select name="married" class="form-control form-select" >
<option value="UNKNOWN" selected><@locale code="userinfo.married.unknown" /></option>
<option value="SINGLE" ><@locale code="userinfo.married.single" /></option>
<option value="MARRIED" ><@locale code="userinfo.married.married" /></option>

View File

@ -52,7 +52,7 @@
</td>
<td style="width:15%;"><@locale code="userinfo.status" /></td>
<td style="width:35%;">
<select name="status" id="status" class="form-control" >
<select name="status" id="status" class="form-control form-select" >
<option value="1" <#if 1==model.status>selected</#if>><@locale code="userinfo.status.active" /></option>
<option value="2" <#if 2==model.status>selected</#if>><@locale code="userinfo.status.inactive" /></option>
<option value="5" <#if 5==model.status>selected</#if>><@locale code="userinfo.status.lock" /></option>
@ -63,7 +63,7 @@
<tr>
<td style="width:15%;"><@locale code="userinfo.userType" /></td>
<td style="width:35%;">
<select name="userType" class="form-control" >
<select name="userType" class="form-control form-select" >
<option value="EMPLOYEE" <#if 'EMPLOYEE'==model.userType>selected</#if> ><@locale code="userinfo.userType.employee" /></option>
<option value="CONTRACTOR" <#if 'CONTRACTOR'==model.userType>selected</#if>><@locale code="userinfo.userType.contractor" /></option>
<option value="CUSTOMER" <#if 'CUSTOMER'==model.userType>selected</#if>><@locale code="userinfo.userType.customer" /></option>
@ -77,7 +77,7 @@
</td>
<td><@locale code="userinfo.userstate" /></td>
<td style="width:35%;">
<select name="userState" class="form-control" >
<select name="userState" class="form-control form-select" >
<option value="RESIDENT" <#if 'RESIDENT'==model.userState>selected</#if> ><@locale code="userinfo.userstate.resident" /></option>
<option value="WITHDRAWN" <#if 'WITHDRAWN'==model.userState>selected</#if>><@locale code="userinfo.userstate.withdrawn" /></option>
<option value="RETIREE" <#if 'RETIREE'==model.userState>selected</#if>><@locale code="userinfo.userstate.retiree" /></option>
@ -139,7 +139,7 @@
<tr>
<td><@locale code="userinfo.gender" /></td>
<td>
<select name="gender" class="form-control" >
<select name="gender" class="form-control form-select" >
<option value="1" <#if 1==model.gender>selected</#if> ><@locale code="userinfo.gender.female" /></option>
<option value="2" <#if 2==model.gender>selected</#if> ><@locale code="userinfo.gender.male" /></option>
</select>
@ -158,7 +158,7 @@
<tr>
<td><@locale code="userinfo.preferredLanguage" /></td>
<td>
<select class="form-control" name="preferredLanguage" id="preferredLanguage">
<select class="form-control form-select" name="preferredLanguage" id="preferredLanguage">
<option value="en_US" <#if 'en_US'==model.preferredLanguage>selected</#if> >English</option>
<option value="nl_NL" <#if 'nl_NL'==model.preferredLanguage>selected</#if> >Dutch</option>
<option value="fr" <#if 'fr'==model.preferredLanguage>selected</#if> >French</option>
@ -178,7 +178,7 @@
</td>
<td><@locale code="userinfo.timeZone" /></td>
<td nowrap >
<select class="form-control" id="timeZone" name="timeZone" tabindex="61">
<select class="form-control form-select" id="timeZone" name="timeZone" tabindex="61">
<option value="Pacific/Kiritimati" <#if 'Pacific/Kiritimati'==model.timeZone>selected</#if>>(GMT+14:00) Line Islands Time (Pacific/Kiritimati)</option>
<option value="Pacific/Chatham" <#if 'Pacific/Chatham'==model.timeZone>selected</#if>>(GMT+13:45) Chatham Daylight Time (Pacific/Chatham)</option>
<option value="Pacific/Auckland" <#if 'Pacific/Auckland'==model.timeZone>selected</#if>>(GMT+13:00) New Zealand Daylight Time (Pacific/Auckland)</option>
@ -401,7 +401,7 @@
<tr>
<td style="width:15%;"><@locale code="userinfo.idtype" /></td>
<td style="width:35%;">
<select name="idType" class="form-control" >
<select name="idType" class="form-control form-select" >
<option value="0" <#if 0==model.idType>selected</#if> ><@locale code="userinfo.idtype.unknown" /></option>
<option value="1" <#if 1==model.idType>selected</#if> ><@locale code="userinfo.idtype.idcard" /></option>
<option value="2" <#if 2==model.idType>selected</#if> ><@locale code="userinfo.idtype.passport" /></option>
@ -420,7 +420,7 @@
<td><@locale code="userinfo.married" /></td>
<td>
<select name="married" class="form-control" >
<select name="married" class="form-control form-select" >
<option value="0" <#if 0==model.married>selected</#if> ><@locale code="userinfo.married.unknown" /></option>
<option value="1" <#if 1==model.married>selected</#if> ><@locale code="userinfo.married.single" /></option>
<option value="2" <#if 2==model.married>selected</#if> ><@locale code="userinfo.married.married" /></option>

View File

@ -41,7 +41,7 @@
<tr>
<th><@locale code="import.update.exist" /> </th>
<td>
<select name="updateExist" id="updateExist" class="form-control" >
<select name="updateExist" id="updateExist" class="form-control form-select" >
<option value="no" selected > <@locale code="common.text.no" /></option>
<option value="yes"> <@locale code="common.text.yes" /> </option>
</select>

View File

@ -1,320 +0,0 @@
/*!
* artDialog 5 plugins
* Date: 2012-03-16
* https://github.com/aui/artDialog
* (c) 2009-2012 TangBin, http://www.planeArt.cn
*
* This is licensed under the GNU LGPL, version 2.1 or later.
* For details, see: http://creativecommons.org/licenses/LGPL/2.1/
*/
;(function ($) {
/**
* 警告
* @param {String, HTMLElement} 消息内容
* @param {Function} (可选) 回调函数
*/
$.alert = $.dialog.alert = function (content, callback) {
return $.dialog({
id: 'Alert',
fixed: true,
lock: true,
content: content,
ok: true,
beforeunload: callback
});
};
/**
* 确认选择
* @param {String, HTMLElement} 消息内容
* @param {Function} 确定按钮回调函数
* @param {Function} 取消按钮回调函数
*/
$.confirm = $.dialog.confirm = function (content, ok, cancel) {
return $.dialog({
id: 'Confirm',
fixed: true,
lock: true,
content: content,
ok: ok,
cancel: cancel
});
};
/**
* 输入框
* @param {String, HTMLElement} 消息内容
* @param {Function} 确定按钮回调函数函数第一个参数接收用户录入的数据
* @param {String} 输入框默认文本
*/
$.prompt = $.dialog.prompt = function (content, ok, defaultValue) {
defaultValue = defaultValue || '';
var input;
return $.dialog({
id: 'Prompt',
fixed: true,
lock: true,
content: [
'<div style="margin-bottom:5px;font-size:12px">',
content,
'</div>',
'<div>',
'<input type="text" class="d-input-text" value="',
defaultValue,
'" style="width:18em;padding:6px 4px" />',
'</div>'
].join(''),
initialize: function () {
input = this.dom.content.find('.d-input-text')[0];
input.select();
input.focus();
},
ok: function () {
return ok && ok.call(this, input.value);
},
cancel: function () {}
});
};
/** 抖动效果 */
$.dialog.prototype.shake = (function () {
var fx = function (ontween, onend, duration) {
var startTime = + new Date;
var timer = setInterval(function () {
var runTime = + new Date - startTime;
var pre = runTime / duration;
if (pre >= 1) {
clearInterval(timer);
onend(pre);
} else {
ontween(pre);
};
}, 13);
};
var animate = function (elem, distance, duration) {
var quantity = arguments[3];
if (quantity === undefined) {
quantity = 6;
duration = duration / quantity;
};
var style = elem.style;
var from = parseInt(style.marginLeft) || 0;
fx(function (pre) {
elem.style.marginLeft = from + (distance - from) * pre + 'px';
}, function () {
if (quantity !== 0) {
animate(
elem,
quantity === 1 ? 0 : (distance / quantity - distance) * 1.3,
duration,
-- quantity
);
};
}, duration);
};
return function () {
animate(this.dom.wrap[0], 40, 600);
return this;
};
})();
// 拖拽支持
var DragEvent = function () {
var that = this,
proxy = function (name) {
var fn = that[name];
that[name] = function () {
return fn.apply(that, arguments);
};
};
proxy('start');
proxy('over');
proxy('end');
};
DragEvent.prototype = {
// 开始拖拽
// onstart: function () {},
start: function (event) {
$(document)
.bind('mousemove', this.over)
.bind('mouseup', this.end);
this.x = event.clientX;
this.y = event.clientY;
this.onstart(event.clientX, event.clientY);
return false;
},
// 正在拖拽
// onover: function () {},
over: function (event) {
this.onover(
event.clientX - this.x,
event.clientY - this.y
);
return false;
},
// 结束拖拽
// onend: function () {},
end: function (event) {
$(document)
.unbind('mousemove', this.over)
.unbind('mouseup', this.end);
this.onend(event.clientX, event.clientY);
return false;
}
};
var $window = $(window),
$document = $(document),
html = document.documentElement,
isIE6 = !('minWidth' in html.style),
isLosecapture = !isIE6 && 'onlosecapture' in html,
isSetCapture = 'setCapture' in html,
dragstart = function () {
return false
};
var dragInit = function (event) {
var dragEvent = new DragEvent,
api = artDialog.focus,
dom = api.dom,
$wrap = dom.wrap,
$title = dom.title,
$main = dom.main,
wrap = $wrap[0],
title = $title[0],
main = $main[0],
wrapStyle = wrap.style,
mainStyle = main.style;
var isResize = event.target === dom.se[0] ? true : false;
var isFixed = wrap.style.position === 'fixed',
minX = isFixed ? 0 : $document.scrollLeft(),
minY = isFixed ? 0 : $document.scrollTop(),
maxX = $window.width() - wrap.offsetWidth + minX,
maxY = $window.height() - wrap.offsetHeight + minY;
var startWidth, startHeight, startLeft, startTop;
// 对话框准备拖动
dragEvent.onstart = function (x, y) {
if (isResize) {
startWidth = main.offsetWidth;
startHeight = main.offsetHeight;
} else {
startLeft = wrap.offsetLeft;
startTop = wrap.offsetTop;
};
$document.bind('dblclick', dragEvent.end)
.bind('dragstart', dragstart);
if (isLosecapture) {
$title.bind('losecapture', dragEvent.end)
} else {
$window.bind('blur', dragEvent.end)
};
isSetCapture && title.setCapture();
$wrap.addClass('d-state-drag');
api.focus();
};
// 对话框拖动进行中
dragEvent.onover = function (x, y) {
if (isResize) {
var width = x + startWidth,
height = y + startHeight;
wrapStyle.width = 'auto';
mainStyle.width = Math.max(0, width) + 'px';
wrapStyle.width = wrap.offsetWidth + 'px';
mainStyle.height = Math.max(0, height) + 'px';
} else {
var left = Math.max(minX, Math.min(maxX, x + startLeft)),
top = Math.max(minY, Math.min(maxY, y + startTop));
wrapStyle.left = left + 'px';
wrapStyle.top = top + 'px';
};
};
// 对话框拖动结束
dragEvent.onend = function (x, y) {
$document.unbind('dblclick', dragEvent.end)
.unbind('dragstart', dragstart);
if (isLosecapture) {
$title.unbind('losecapture', dragEvent.end);
} else {
$window.unbind('blur', dragEvent.end)
};
isSetCapture && title.releaseCapture();
$wrap.removeClass('d-state-drag');
};
dragEvent.start(event);
};
// 代理 mousedown 事件触发对话框拖动
$(document).bind('mousedown', function (event) {
var api = artDialog.focus;
if (!api) return;
var target = event.target,
config = api.config,
dom = api.dom;
if (config.drag !== false && target === dom.title[0]
|| config.resize !== false && target === dom.se[0]) {
dragInit(event);
// 防止firefox与chrome滚屏
return false;
};
});
}(this.art || this.jQuery));

View File

@ -1,981 +0,0 @@
/*!
* artDialog 5.0.4
* Date: 2013-07-31
* https://github.com/aui/artDialog
* (c) 2009-2013 TangBin, http://www.planeArt.cn
*
* This is licensed under the GNU LGPL, version 2.1 or later.
* For details, see: http://creativecommons.org/licenses/LGPL/2.1/
*/
;(function ($, window, undefined) {
// artDialog 只支持 xhtml 1.0 或者以上的 DOCTYPE 声明
if (document.compatMode === 'BackCompat') {
throw new Error('artDialog: Document types require more than xhtml1.0');
};
var _singleton,
_count = 0,
_root = $(document.getElementsByTagName('html')[0]),
_expando = 'artDialog' + (+ new Date),
_isIE6 = window.VBArray && !window.XMLHttpRequest,
_isMobile = 'createTouch' in document && !('onmousemove' in document)
|| /(iPhone|iPad|iPod)/i.test(navigator.userAgent),
_isFixed = !_isIE6 && !_isMobile,
_getActive = function () {
try {
// bug: ie8~9, iframe #26
return document.activeElement;
} catch (e) {
}
},
_activeElement = _getActive();
var artDialog = function (config, ok, cancel) {
config = config || {};
if (typeof config === 'string' || config.nodeType === 1) {
config = {content: config, fixed: !_isMobile};
};
var api, defaults = artDialog.defaults;
var elem = config.follow = this.nodeType === 1 && this || config.follow;
// 合并默认配置
for (var i in defaults) {
if (config[i] === undefined) {
config[i] = defaults[i];
};
};
config.id = elem && elem[_expando + 'follow'] || config.id || _expando + _count;
api = artDialog.list[config.id];
if (api) {
if (elem) {
api.follow(elem)
};
api.zIndex().focus();
return api;
};
// 目前主流移动设备对fixed支持不好禁用此特性
if (!_isFixed) {
config.fixed = false;
};
// !$.isArray(config.button)
if (!config.button || !config.button.push) {
config.button = [];
};
// 确定按钮
if (ok !== undefined) {
config.ok = ok;
};
if (config.ok) {
config.button.push({
id: 'ok',
value: config.okValue,
callback: config.ok,
focus: true
});
};
// 取消按钮
if (cancel !== undefined) {
config.cancel = cancel;
};
if (config.cancel) {
config.button.push({
id: 'cancel',
value: config.cancelValue,
callback: config.cancel
});
};
// 更新 zIndex 全局配置
artDialog.defaults.zIndex = config.zIndex;
_count ++;
return artDialog.list[config.id] = _singleton ?
_singleton._create(config) : new artDialog.fn._create(config);
};
artDialog.version = '5.0.4';
artDialog.fn = artDialog.prototype = {
_create: function (config) {
var dom;
this.closed = false;
this.config = config;
this.dom = dom = this.dom || this._innerHTML(config);
config.skin && dom.wrap.addClass(config.skin);
dom.wrap.css('position', config.fixed ? 'fixed' : 'absolute');
dom.close[config.cancel === false ? 'hide' : 'show']();
dom.content.css('padding', config.padding);
this.button.apply(this, config.button);
this.title(config.title)
.content(config.content)
.size(config.width, config.height)
.time(config.time);
this._reset();
this.zIndex();
config.lock && this.lock();
this._addEvent();
this[config.visible ? 'visible' : 'hidden']().focus();
_singleton = null;
config.initialize && config.initialize.call(this);
return this;
},
/**
* 设置内容
* @param {String, HTMLElement, Object} 内容 (可选)
*/
content: function (message) {
var prev, next, parent, display,
that = this,
$content = this.dom.content,
content = $content[0];
if (this._elemBack) {
this._elemBack();
delete this._elemBack;
};
if (typeof message === 'string') {
$content.html(message);
} else
if (message && message.nodeType === 1) {
// 让传入的元素在对话框关闭后可以返回到原来的地方
display = message.style.display;
prev = message.previousSibling;
next = message.nextSibling;
parent = message.parentNode;
this._elemBack = function () {
if (prev && prev.parentNode) {
prev.parentNode.insertBefore(message, prev.nextSibling);
} else if (next && next.parentNode) {
next.parentNode.insertBefore(message, next);
} else if (parent) {
parent.appendChild(message);
};
message.style.display = display;
that._elemBack = null;
};
$content.html('');
content.appendChild(message);
$(message).show();
};
this._reset();
return this;
},
/**
* 设置标题
* @param {String, Boolean} 标题内容. false 则隐藏标题栏
*/
title: function (content) {
var dom = this.dom,
outer = dom.outer,
$title = dom.title,
className = 'd-state-noTitle';
if (content === false) {
$title.hide().html('');
outer.addClass(className);
} else {
$title.show().html(content);
outer.removeClass(className);
};
return this;
},
/** @inner 位置居中 */
position: function () {
var dom = this.dom,
wrap = dom.wrap[0],
$window = dom.window,
$document = dom.document,
fixed = this.config.fixed,
dl = fixed ? 0 : $document.scrollLeft(),
dt = fixed ? 0 : $document.scrollTop(),
ww = $window.width(),
wh = $window.height(),
ow = wrap.offsetWidth,
oh = wrap.offsetHeight,
left = (ww - ow) / 2 + dl,
top = (wh - oh) * 382 / 1000 + dt,// 黄金比例
style = wrap.style;
style.left = Math.max(parseInt(left), dl) + 'px';
style.top = Math.max(parseInt(top), dt) + 'px';
if (this._follow) {
this._follow.removeAttribute(_expando + 'follow');
this._follow = null;
}
return this;
},
/**
* 尺寸
* @param {Number, String} 宽度
* @param {Number, String} 高度
*/
size: function (width, height) {
var style = this.dom.main[0].style;
if (typeof width === 'number') {
width = width + 'px';
};
if (typeof height === 'number') {
height = height + 'px';
};
style.width = width;
style.height = height;
return this;
},
/**
* 跟随元素
* @param {HTMLElement}
*/
follow: function (elem) {
var $elem = $(elem),
config = this.config;
// 隐藏元素不可用
if (!elem || !elem.offsetWidth && !elem.offsetHeight) {
return this.position(this._left, this._top);
};
var fixed = config.fixed,
expando = _expando + 'follow',
dom = this.dom,
$window = dom.window,
$document = dom.document,
winWidth = $window.width(),
winHeight = $window.height(),
docLeft = $document.scrollLeft(),
docTop = $document.scrollTop(),
offset = $elem.offset(),
width = elem.offsetWidth,
height = elem.offsetHeight,
left = fixed ? offset.left - docLeft : offset.left,
top = fixed ? offset.top - docTop : offset.top,
wrap = this.dom.wrap[0],
style = wrap.style,
wrapWidth = wrap.offsetWidth,
wrapHeight = wrap.offsetHeight,
setLeft = left - (wrapWidth - width) / 2,
setTop = top + height,
dl = fixed ? 0 : docLeft,
dt = fixed ? 0 : docTop;
setLeft = setLeft < dl ? left :
(setLeft + wrapWidth > winWidth) && (left - wrapWidth > dl)
? left - wrapWidth + width
: setLeft;
setTop = (setTop + wrapHeight > winHeight + dt)
&& (top - wrapHeight > dt)
? top - wrapHeight
: setTop;
style.left = parseInt(setLeft) + 'px';
style.top = parseInt(setTop) + 'px';
this._follow && this._follow.removeAttribute(expando);
this._follow = elem;
elem[expando] = config.id;
return this;
},
/**
* 自定义按钮
* @example
button({
value: 'login',
callback: function () {},
disabled: false,
focus: true
}, .., ..)
*/
button: function () {
var dom = this.dom,
$buttons = dom.buttons,
elem = $buttons[0],
strongButton = 'd-state-highlight',
listeners = this._listeners = this._listeners || {},
ags = [].slice.call(arguments);
var i = 0, val, value, id, isNewButton, button;
for (; i < ags.length; i ++) {
val = ags[i];
value = val.value;
id = val.id || value;
isNewButton = !listeners[id];
button = !isNewButton ? listeners[id].elem : document.createElement('input');
button.type = 'button';
button.className = 'd-button';
if (!listeners[id]) {
listeners[id] = {};
};
if (value) {
button.value = value;
};
if (val.width) {
button.style.width = val.width;
};
if (val.callback) {
listeners[id].callback = val.callback;
};
if (val.focus) {
this._focus && this._focus.removeClass(strongButton);
this._focus = $(button).addClass(strongButton);
this.focus();
};
button[_expando + 'callback'] = id;
button.disabled = !!val.disabled;
if (isNewButton) {
listeners[id].elem = button;
elem.appendChild(button);
};
};
$buttons[0].style.display = ags.length ? '' : 'none';
return this;
},
/** 显示对话框 */
visible: function () {
//this.dom.wrap.show();
this.dom.wrap.css('visibility', 'visible');
this.dom.outer.addClass('d-state-visible');
if (this._isLock) {
this._lockMask.show();
};
return this;
},
/** 隐藏对话框 */
hidden: function () {
//this.dom.wrap.hide();
this.dom.wrap.css('visibility', 'hidden');
this.dom.outer.removeClass('d-state-visible');
if (this._isLock) {
this._lockMask.hide();
};
return this;
},
/** 关闭对话框 */
close: function () {
if (this.closed) {
return this;
};
var dom = this.dom,
$wrap = dom.wrap,
list = artDialog.list,
beforeunload = this.config.beforeunload;
if (beforeunload && beforeunload.call(this) === false) {
return this;
};
if (artDialog.focus === this) {
artDialog.focus = null;
};
if (this._follow) {
this._follow.removeAttribute(_expando + 'follow');
}
if (this._elemBack) {
this._elemBack();
};
this.time();
this.unlock();
this._removeEvent();
delete list[this.config.id];
if (_singleton) {
$wrap.remove();
// 使用单例模式
} else {
_singleton = this;
dom.title.html('');
dom.content.html('');
dom.buttons.html('');
$wrap[0].className = $wrap[0].style.cssText = '';
dom.outer[0].className = 'd-outer';
$wrap.css({
left: 0,
top: 0,
position: _isFixed ? 'fixed' : 'absolute'
});
for (var i in this) {
if (this.hasOwnProperty(i) && i !== 'dom') {
delete this[i];
};
};
this.hidden();
};
// 恢复焦点,照顾键盘操作的用户
if (_activeElement) {
_activeElement.focus();
}
this.closed = true;
return this;
},
/**
* 定时关闭
* @param {Number} 单位毫秒, 无参数则停止计时器
*/
time: function (time) {
var that = this,
timer = this._timer;
timer && clearTimeout(timer);
if (time) {
this._timer = setTimeout(function(){
that._click('cancel');
}, time);
};
return this;
},
/** @inner 设置焦点 */
focus: function () {
var that = this,
isFocus = function () {
var activeElement = _getActive();
return activeElement && that.dom.wrap[0].contains(activeElement);
};
if (!isFocus()) {
_activeElement = _getActive();
}
setTimeout(function () {
if (!isFocus()) {
try {
var elem = that._focus || that.dom.close || taht.dom.wrap;
elem[0].focus();
// IE对不可见元素设置焦点会报错
} catch (e) {};
}
}, 16);
return this;
},
/** 置顶对话框 */
zIndex: function () {
var dom = this.dom,
top = artDialog.focus,
index = artDialog.defaults.zIndex ++;
// 设置叠加高度
dom.wrap.css('zIndex', index);
this._lockMask && this._lockMask.css('zIndex', index - 1);
// 设置最高层的样式
top && top.dom.outer.removeClass('d-state-focus');
artDialog.focus = this;
dom.outer.addClass('d-state-focus');
return this;
},
/** 设置屏锁 */
lock: function () {
if (this._isLock) {
return this;
};
var that = this,
config = this.config,
dom = this.dom,
div = document.createElement('div'),
$div = $(div),
index = artDialog.defaults.zIndex - 1;
this.zIndex();
dom.outer.addClass('d-state-lock');
$div.css({
zIndex: index,
position: 'fixed',
left: 0,
top: 0,
width: '100%',
height: '100%',
overflow: 'hidden'
}).addClass('d-mask');
if (!_isFixed) {
$div.css({
position: 'absolute',
width: $(window).width() + 'px',
height: $(document).height() + 'px'
});
};
$div.bind('dblclick', function () {
that._click('cancel');
});
document.body.appendChild(div);
this._lockMask = $div;
this._isLock = true;
return this;
},
/** 解开屏锁 */
unlock: function () {
if (!this._isLock) {
return this;
};
this._lockMask.unbind();
this._lockMask.hide();
this._lockMask.remove();
this.dom.outer.removeClass('d-state-lock');
this._isLock = false;
return this;
},
// 获取元素
_innerHTML: function (data) {
var body = document.body;
if (!body) {
throw new Error('artDialog: "documents.body" not ready');
};
var wrap = document.createElement('div');
wrap.style.cssText = 'position:absolute;left:0;top:0';
wrap.innerHTML = artDialog._templates
.replace(/{([^}]+)}/g, function ($0, $1) {
var value = data[$1];
return typeof value === 'string' ? value : '';
});
body.insertBefore(wrap, body.firstChild);
var name,
i = 0,
dom = {},
els = wrap.getElementsByTagName('*'),
elsLen = els.length;
for (; i < elsLen; i ++) {
name = els[i].className.split('d-')[1];
if (name) {
dom[name] = $(els[i]);
};
};
dom.window = $(window);
dom.document = $(document);
dom.wrap = $(wrap);
return dom;
},
// 按钮回调函数触发
_click: function (id) {
var fn = this._listeners[id] && this._listeners[id].callback;
return typeof fn !== 'function' || fn.call(this) !== false ?
this.close() : this;
},
// 重置位置
_reset: function () {
var elem = this.config.follow || this._follow;
elem ? this.follow(elem) : this.position();
},
// 事件代理
_addEvent: function () {
var that = this,
dom = this.dom;
// 监听点击
dom.wrap
.bind('click', function (event) {
var target = event.target, callbackID;
// IE BUG
if (target.disabled) {
return false;
};
if (target === dom.close[0]) {
that._click('cancel');
return false;
} else {
callbackID = target[_expando + 'callback'];
callbackID && that._click(callbackID);
};
})
.bind('mousedown', function () {
that.zIndex();
});
},
// 卸载事件代理
_removeEvent: function () {
this.dom.wrap.unbind();
}
};
artDialog.fn._create.prototype = artDialog.fn;
// 快捷方式绑定触发元素
$.fn.dialog = $.fn.artDialog = function () {
var config = arguments;
this[this.live ? 'live' : 'bind']('click', function () {
artDialog.apply(this, config);
return false;
});
return this;
};
/** 最顶层的对话框API */
artDialog.focus = null;
/**
* 根据 ID 获取某对话框 API
* @param {String} 对话框 ID
* @return {Object} 对话框 API (实例)
*/
artDialog.get = function (id) {
return id === undefined
? artDialog.list
: artDialog.list[id];
};
artDialog.list = {};
// 全局快捷键
$(document).bind('keydown', function (event) {
var target = event.target,
nodeName = target.nodeName,
rinput = /^input|textarea$/i,
api = artDialog.focus,
keyCode = event.keyCode;
if (!api || rinput.test(nodeName) && target.type !== 'button') {
return;
};
// ESC
keyCode === 27 && api._click('cancel');
});
// 锁屏限制tab
function focusin (event) {
var api = artDialog.focus;
if (api && api._isLock && !api.dom.wrap[0].contains(event.target)) {
event.stopPropagation();
api.dom.outer[0].focus();
}
}
if ($.fn.live) {
$('body').live('focus', focusin);
} else if (document.addEventListener) {
document.addEventListener('focus', focusin, true);
} else {
$(document).bind('focusin', focusin);
}
// 浏览器窗口改变后重置对话框位置
$(window).bind('resize', function () {
var dialogs = artDialog.list;
for (var id in dialogs) {
dialogs[id]._reset();
};
});
// XHTML 模板
// 使用 uglifyjs 压缩能够预先处理"+"号合并字符串
// @see http://marijnhaverbeke.nl/uglifyjs
artDialog._templates =
'<div class="d-outer" role="dialog" tabindex="-1" aria-labelledby="d-title-{id}" aria-describedby="d-content-{id}">'
+ '<table class="d-border">'
+ '<tbody>'
+ '<tr>'
+ '<td class="d-nw"></td>'
+ '<td class="d-n"></td>'
+ '<td class="d-ne"></td>'
+ '</tr>'
+ '<tr>'
+ '<td class="d-w"></td>'
+ '<td class="d-c">'
+ '<div class="d-inner">'
+ '<table class="d-dialog">'
+ '<tbody>'
+ '<tr>'
+ '<td class="d-header">'
+ '<div class="d-titleBar">'
+ '<div id="d-title-{id}" class="d-title"></div>'
+ '<a class="d-close" href="javascript:;" title="{cancelValue}">×</a>'
+ '</div>'
+ '</td>'
+ '</tr>'
+ '<tr>'
+ '<td class="d-main">'
+ '<div id="d-content-{id}" class="d-content"></div>'
+ '</td>'
+ '</tr>'
+ '<tr>'
+ '<td class="d-footer">'
+ '<div class="d-buttons"></div>'
+ '</td>'
+ '</tr>'
+ '</tbody>'
+ '</table>'
+ '</div>'
+ '</td>'
+ '<td class="d-e"></td>'
+ '</tr>'
+ '<tr>'
+ '<td class="d-sw"></td>'
+ '<td class="d-s"></td>'
+ '<td class="d-se"></td>'
+ '</tr>'
+ '</tbody>'
+ '</table>'
+'</div>';
/**
* 默认配置
*/
artDialog.defaults = {
// 消息内容
content: '<div class="d-loading"><span>loading..</span></div>',
// 标题
title: 'message',
// 自定义按钮
button: null,
// 确定按钮回调函数
ok: null,
// 取消按钮回调函数
cancel: null,
// 对话框初始化后执行的函数
initialize: null,
// 对话框关闭前执行的函数
beforeunload: null,
// 确定按钮文本
okValue: 'ok',
// 取消按钮文本
cancelValue: 'cancel',
// 内容宽度
width: 'auto',
// 内容高度
height: 'auto',
// 内容与边界填充距离
padding: '20px 25px',
// 皮肤名(多皮肤共存预留接口)
skin: null,
// 自动关闭时间(毫秒)
time: null,
// 初始化后是否显示对话框
visible: true,
// 让对话框跟随某元素
follow: null,
// 是否锁屏
lock: false,
// 是否固定定位
fixed: false,
// 对话框叠加高度值(重要:此值不能超过浏览器最大限制)
zIndex: 1987
};
this.artDialog = $.dialog = $.artDialog = artDialog;
}(this.art || this.jQuery, this));

File diff suppressed because one or more lines are too long

View File

@ -1,327 +0,0 @@
/*!
* Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus:not(:focus-visible) {
outline: 0 !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]) {
color: inherit;
text-decoration: none;
}
a:not([href]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg {
overflow: hidden;
vertical-align: middle;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
select {
word-wrap: normal;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button:not(:disabled),
[type="button"]:not(:disabled),
[type="reset"]:not(:disabled),
[type="submit"]:not(:disabled) {
cursor: pointer;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

View File

@ -1,8 +0,0 @@
/*!
* Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */

File diff suppressed because one or more lines are too long

View File

@ -1,327 +0,0 @@
/*!
* Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus:not(:focus-visible) {
outline: 0 !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]) {
color: inherit;
text-decoration: none;
}
a:not([href]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg {
overflow: hidden;
vertical-align: middle;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
select {
word-wrap: normal;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button:not(:disabled),
[type="button"]:not(:disabled),
[type="reset"]:not(:disabled),
[type="submit"]:not(:disabled) {
cursor: pointer;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

View File

@ -1,8 +0,0 @@
/*!
* Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */

View File

@ -1,325 +0,0 @@
// Minty 4.3.1
// Bootswatch
// Variables ===================================================================
$web-font-path: "https://fonts.googleapis.com/css?family=Montserrat&display=swap" !default;
@import url($web-font-path);
// Navbar ======================================================================
.navbar {
font-family: $headings-font-family;
}
.bg-dark {
background-color: $secondary !important;
}
.border-dark {
border-color: $secondary !important;
}
// Buttons =====================================================================
.btn {
font-family: $headings-font-family;
&,
&:hover {
color: $white;
}
&-light,
&-light:hover {
color: $gray-700;
}
&-link,
&-link:hover {
color: $primary;
}
&-link.disabled:hover {
color: $gray-600;
}
&-outline-primary {
color: $primary;
}
&-outline-secondary {
color: $secondary;
}
&-outline-success {
color: $success;
}
&-outline-info {
color: $info;
}
&-outline-warning {
color: $warning;
}
&-outline-danger {
color: $danger;
}
&-outline-dark {
color: $dark;
}
&-outline-light {
color: $light;
}
}
// Typography ==================================================================
// Tables ======================================================================
.table {
&-primary,
&-secondary,
&-success,
&-info,
&-warning,
&-danger {
color: #fff;
}
&-primary {
&, > th, > td {
background-color: $primary;
}
}
&-secondary {
&, > th, > td {
background-color: $secondary;
}
}
&-light {
&, > th, > td {
background-color: $light;
}
}
&-dark {
&, > th, > td {
background-color: $dark;
}
}
&-success {
&, > th, > td {
background-color: $success;
}
}
&-info {
&, > th, > td {
background-color: $info;
}
}
&-danger {
&, > th, > td {
background-color: $danger;
}
}
&-warning {
&, > th, > td {
background-color: $warning;
}
}
&-active {
&, > th, > td {
background-color: $table-active-bg;
}
}
&-hover {
.table-primary:hover {
&, > th, > td {
background-color: darken($primary, 5%);
}
}
.table-secondary:hover {
&, > th, > td {
background-color: darken($secondary, 5%);
}
}
.table-light:hover {
&, > th, > td {
background-color: darken($light, 5%);
}
}
.table-dark:hover {
&, > th, > td {
background-color: darken($dark, 5%);
}
}
.table-success:hover {
&, > th, > td {
background-color: darken($success, 5%);
}
}
.table-info:hover {
&, > th, > td {
background-color: darken($info, 5%);
}
}
.table-danger:hover {
&, > th, > td {
background-color: darken($danger, 5%);
}
}
.table-warning:hover {
&, > th, > td {
background-color: darken($warning, 5%);
}
}
.table-active:hover {
&, > th, > td {
background-color: $table-active-bg;
}
}
}
.thead-dark th {
background-color: $primary;
border-color: $table-border-color;
font-family: $headings-font-family;
}
}
// Forms =======================================================================
legend {
font-family: $headings-font-family;
}
// Navs ========================================================================
.dropdown-menu {
font-family: $font-family-sans-serif;
}
.breadcrumb {
a {
color: $navbar-dark-color;
}
a:hover {
color: $white;
text-decoration: none;
}
}
// Indicators ==================================================================
.alert {
color: $white;
h1, h2, h3, h4, h5, h6 {
color: inherit;
}
a,
.alert-link {
color: $white;
}
&-primary {
&, > th, > td {
background-color: $primary;
}
}
&-secondary {
&, > th, > td {
background-color: $secondary;
}
}
&-success {
&, > th, > td {
background-color: $success;
}
}
&-info {
&, > th, > td {
background-color: $info;
}
}
&-danger {
&, > th, > td {
background-color: $danger;
}
}
&-warning {
&, > th, > td {
background-color: $warning;
}
}
&-dark {
&, > th, > td {
background-color: $dark;
}
}
&-light {
&, > th, > td {
background-color: $light;
}
}
&-light {
&,
& a:not(.btn),
& .alert-link {
color: $body-color;
}
}
}
.badge {
color: $white;
&-light {
color: $gray-700;
}
}
// Progress bars ===============================================================
// Containers ==================================================================
.card,
.list-group-item {
h1, h2, h3, h4, h5, h6 {
color: inherit;
}
}

View File

@ -1,97 +0,0 @@
// Minty 4.3.1
// Bootswatch
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #f7f7f9 !default;
$gray-300: #eceeef !default;
$gray-400: #ced4da !default;
$gray-500: #aaa !default;
$gray-600: #888 !default;
$gray-700: #5a5a5a !default;
$gray-800: #343a40 !default;
$gray-900: #212529 !default;
$black: #000 !default;
$blue: #007bff !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #FF7851 !default;
$orange: #fd7e14 !default;
$yellow: #FFCE67 !default;
$green: #56CC9D !default;
$teal: #20c997 !default;
$cyan: #6CC3D5 !default;
$primary: #78C2AD !default;
$secondary: #F3969A !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-800 !default;
$yiq-contrasted-threshold: 250 !default;
// Body
$body-color: $gray-600 !default;
// Components
$border-radius: .4rem !default;
$border-radius-lg: .6rem !default;
$border-radius-sm: .3rem !default;
// Fonts
$headings-font-family: "Montserrat", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !default;
$headings-color: $gray-700 !default;
// Tables
$table-border-color: rgba(0,0,0,0.05) !default;
// Dropdowns
$dropdown-link-hover-color: $white !default;
$dropdown-link-hover-bg: $secondary !default;
// Navbar
$navbar-dark-color: rgba($white,.6) !default;
$navbar-dark-hover-color: $white !default;
$navbar-light-color: rgba($black,.3) !default;
$navbar-light-hover-color: $gray-700 !default;
$navbar-light-active-color: $gray-700 !default;
$navbar-light-disabled-color: rgba($black,.1) !default;
// Pagination
$pagination-color: $white !default;
$pagination-bg: $primary !default;
$pagination-border-color: $primary !default;
$pagination-hover-color: $white !default;
$pagination-hover-bg: $secondary !default;
$pagination-hover-border-color: $pagination-hover-bg !default;
$pagination-active-bg: $secondary !default;
$pagination-active-border-color: $pagination-active-bg !default;
$pagination-disabled-color: $white !default;
$pagination-disabled-bg: #CCE8E0 !default;
$pagination-disabled-border-color: $pagination-disabled-bg !default;
// Breadcrumbs
$breadcrumb-bg: $primary !default;
$breadcrumb-divider-color: $white !default;
$breadcrumb-active-color: $breadcrumb-divider-color !default;

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

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,485 @@
/*!
* Bootstrap Reboot v5.1.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
:root {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg-rgb: 255, 255, 255;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-bg: #fff;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
background-color: currentColor;
border: 0;
opacity: 0.25;
}
hr:not([size]) {
height: 1px;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-bs-original-title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-left: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.2em;
background-color: #fcf8e3;
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: #0d6efd;
text-decoration: underline;
}
a:hover {
color: #0a58ca;
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
direction: ltr /* rtl:ignore */;
unicode-bidi: bidi-override;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: #d63384;
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.2rem 0.4rem;
font-size: 0.875em;
color: #fff;
background-color: #212529;
border-radius: 0.2rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
font-weight: 700;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: #6c757d;
text-align: left;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]::-webkit-calendar-picker-indicator {
display: none;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: left;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: left;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
outline-offset: -2px;
-webkit-appearance: textfield;
}
/* rtl:raw:
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
}
::file-selector-button {
font: inherit;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

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,482 @@
/*!
* Bootstrap Reboot v5.1.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
:root {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg-rgb: 255, 255, 255;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-bg: #fff;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
background-color: currentColor;
border: 0;
opacity: 0.25;
}
hr:not([size]) {
height: 1px;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-bs-original-title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-right: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-right: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.2em;
background-color: #fcf8e3;
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: #0d6efd;
text-decoration: underline;
}
a:hover {
color: #0a58ca;
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
direction: ltr ;
unicode-bidi: bidi-override;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: #d63384;
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.2rem 0.4rem;
font-size: 0.875em;
color: #fff;
background-color: #212529;
border-radius: 0.2rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
font-weight: 700;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: #6c757d;
text-align: right;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]::-webkit-calendar-picker-indicator {
display: none;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: right;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: right;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
outline-offset: -2px;
-webkit-appearance: textfield;
}
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
}
::file-selector-button {
font: inherit;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */

File diff suppressed because one or more lines are too long

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