MaxKey před 3 roky
rodič
revize
d67bc93c97
24 změnil soubory, kde provedl 220 přidání a 224 odebrání
  1. 0 18
      maxkey-protocols/maxkey-protocol-oauth-2.0/json-web-key-generator/Usage.txt
  2. 0 2
      maxkey-protocols/maxkey-protocol-oauth-2.0/json-web-key-generator/json-web-key-generator.bat
  3. binární
      maxkey-protocols/maxkey-protocol-oauth-2.0/json-web-key-generator/json-web-key-generator.jar
  4. 0 14
      maxkey-protocols/maxkey-protocol-oauth-2.0/json-web-key-generator/maxkey.jwks
  5. 3 3
      maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/historys/loginList.ftl
  6. 2 2
      maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/historys/sessionList.ftl
  7. 2 2
      maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/historys/systemLogsList.ftl
  8. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/JwtDetailsController.java
  9. 5 5
      maxkey-webs/maxkey-web-mgt/src/main/resources/messages/message.properties
  10. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/resources/messages/message_en.properties
  11. 5 5
      maxkey-webs/maxkey-web-mgt/src/main/resources/messages/message_zh_CN.properties
  12. 28 31
      maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/appAddCommon.ftl
  13. 29 27
      maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/appUpdateCommon.ftl
  14. 16 16
      maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/oauth20/appAdd.ftl
  15. 16 17
      maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/oauth20/appUpdate.ftl
  16. 4 1
      maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/saml20/appAdd.ftl
  17. 10 4
      maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/saml20/appUpdate.ftl
  18. 18 5
      maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/tokenbased/appAdd.ftl
  19. 17 4
      maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/tokenbased/appUpdate.ftl
  20. 23 23
      maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/orgs/orgsAdd.ftl
  21. 23 23
      maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/orgs/orgsUpdate.ftl
  22. 5 11
      maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/userinfo/userAdd.ftl
  23. 2 8
      maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/userinfo/userUpdate.ftl
  24. 10 1
      maxkey-webs/maxkey-web-resources/src/main/resources/static/javascript/platform.common.js

+ 0 - 18
maxkey-protocols/maxkey-protocol-oauth-2.0/json-web-key-generator/Usage.txt

@@ -1,18 +0,0 @@
-Usage
-Invoking the utility without arguments will print its usage message
-
-usage java -jar json-web-key-generator.jar -t keyType [options]
- -a arg   Algorithm (optional)
- -c arg   Key Curve, required for EC key type. Must be one of P-256,
-            P-384, P-521
- -i arg   Key ID (optional)
- -p         Display public key separately
- -s arg   Key Size in bits, required for RSA and OCT key types. Must be
-            an integer divisible by 8
- -S         Wrap the generated key in a KeySet
- -t arg   Key Type, one of RSA, oct, EC
- -u arg   Usage, one of enc, sig (optional)
-Example
-To generate a 2048-bit RSA public  private key pair, with a specified key ID and use, and wrapped in a standard JWK set
-
-java -jar json-web-key-generator.jar -t RSA -s 2048 -i 1 -u sig -S

+ 0 - 2
maxkey-protocols/maxkey-protocol-oauth-2.0/json-web-key-generator/json-web-key-generator.bat

@@ -1,2 +0,0 @@
-java -jar json-web-key-generator.jar -a RS256 -t RSA -s 2048 -i maxkey_rsa -u sig -S >maxkey.jwks
-pause

binární
maxkey-protocols/maxkey-protocol-oauth-2.0/json-web-key-generator/json-web-key-generator.jar


+ 0 - 14
maxkey-protocols/maxkey-protocol-oauth-2.0/json-web-key-generator/maxkey.jwks

@@ -1,14 +0,0 @@
-Full key:
-{
-  "keys": [
-    {
-      "kty": "RSA",
-      "d": "K2VCm_6enq5uoFLZXUlWkgbCXj5m9X5uUX3_Ol3qcY9X1cP04TN98R8lpw-ASeFDRFRhe0FT-lYCYu_fqZcrNXVhyN3rgi27af5x4HdFMnHLTLMPvE6aEyTGmZjTF1AbiX5VOJAl6POI9FiyTbV1Uqt943ydJv8SH4NfcYhKBmpp8Fi1f58mon-bYwsIy8mzZjssc8KZy-GzpscKrc5ewb7106JY3uRQNprAHrpcGAPZ8uXUvVhrxp_FNn5Nf5KVxl2tm50L83_5nw0OZrbJ8Ceg7sZAw_Z41lbYbS9VDaST6TuKRb7W4XCKimZUn57LoQT2-Gkv6msJHCmqTgK02Q",
-      "e": "AQAB",
-      "use": "sig",
-      "kid": "maxkey_rsa",
-      "alg": "RS256",
-      "n": "vyfZwQuBLNvJDhmziUCFuAfIv-bC6ivodcR6PfanTt8XLd6G63Yx10YChAdsDACjoLz1tEU56WPp_ee_vcTSsEZT3ouWJYghuGI2j4XclXlEj0S7DzdpcBBpI4n5dr8K3iKY-3JUMZR1AMBHI50UaMST9ZTZJAjUPIYxkhRdca5lWBo4wGUh1yj_80-Bq6al0ia9S5NTzNLaJ18jSxFqZ79BAkBm-KjkP248YUk6WBGtYEAV5Fws4dpse4hrqJ3RRHiMZV1o1iTmPHz_l55ZSDP3vpYf6iKqKzoK2RmdjfH5mGpbc4-PclTs4GKfwZ7cWfrny6B7sMnQfzujCH996Q"
-    }
-  ]
-}

+ 3 - 3
maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/historys/loginList.ftl

@@ -71,11 +71,11 @@
 				<th data-field="message"><@locale code="log.loginhistory.message"/></th>
 				<th data-field="loginType"><@locale code="log.loginhistory.loginType"/></th>
 				<th data-field="sourceIp"><@locale code="log.loginhistory.sourceIp"/></th>
-				<th data-field="browser"><@locale code="log.loginhistory.browser"/></th>
+				<th data-field="browser"  data-visible="false"><@locale code="log.loginhistory.browser"/></th>
 				<th data-field="loginTime"><@locale code="log.loginhistory.loginTime"/></th>
 				<th data-field="logoutTime"><@locale code="log.loginhistory.logoutTime"/></th>
-				<th data-field="platform"><@locale code="log.loginhistory.platform"/></th>
-				<th data-field="application"><@locale code="log.loginhistory.application"/></th>
+				<th data-field="platform"  data-visible="false"><@locale code="log.loginhistory.platform"/></th>
+				<th data-field="application"  data-visible="false"><@locale code="log.loginhistory.application"/></th>
 				<th data-field="loginUrl" data-visible="false"><@locale code="log.loginhistory.loginUrl"/></th>
 				<th data-field="code" data-visible="false"><@locale code="log.loginhistory.code"/></th>
 				<th data-field="rpUserInfo" data-visible="false"><@locale code="log.loginhistory.rpUserInfo"/></th>

+ 2 - 2
maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/historys/sessionList.ftl

@@ -77,10 +77,10 @@
 				<th data-field="message"><@locale code="log.loginhistory.message"/></th>
 				<th data-field="loginType"><@locale code="log.loginhistory.loginType"/></th>
 				<th data-field="sourceIp"><@locale code="log.loginhistory.sourceIp"/></th>
-				<th data-field="browser"><@locale code="log.loginhistory.browser"/></th>
+				<th data-field="browser"  data-visible="false"><@locale code="log.loginhistory.browser"/></th>
 				<th data-field="loginTime"><@locale code="log.loginhistory.loginTime"/></th>
 				<th data-field="logoutTime"><@locale code="log.loginhistory.logoutTime"/></th>
-				<th data-field="platform"><@locale code="log.loginhistory.platform"/></th>
+				<th data-field="platform"  data-visible="false"><@locale code="log.loginhistory.platform"/></th>
 				<th data-field="application" data-visible="false"><@locale code="log.loginhistory.application"/></th>
 				<th data-field="loginUrl" data-visible="false"><@locale code="log.loginhistory.loginUrl"/></th>
 				<th data-field="code" data-visible="false"><@locale code="log.loginhistory.code"/></th>

+ 2 - 2
maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/historys/systemLogsList.ftl

@@ -55,9 +55,9 @@
 				<th data-field="messageType"><@locale code="log.operate.messageType"/></th>
 				<th data-field="operateType"><@locale code="log.operate.operateType"/></th>
 				<th data-field="username"><@locale code="log.operate.username"/></th>
-				<th data-field="createdBy"><@locale code="common.text.createdby"/></th>
+				<th data-field="createdBy"  data-visible="false"><@locale code="common.text.createdby"/></th>
 				<th data-field="createdDate"><@locale code="common.text.createddate"/></th>
-				<th data-field="modifiedBy"><@locale code="common.text.modifiedby"/></th>
+				<th data-field="modifiedBy"  data-visible="false"><@locale code="common.text.modifiedby"/></th>
 				<th data-field="modifiedDate"><@locale code="common.text.modifieddate"/></th>
 			</tr>
 		</thead>

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/JwtDetailsController.java

@@ -51,7 +51,7 @@ public class JwtDetailsController  extends BaseAppContorller {
 		AppsJwtDetails jwtDetails =new AppsJwtDetails();
 		jwtDetails.setId(jwtDetails.generateId());
 		jwtDetails.setProtocol(ConstsProtocols.JWT);
-		jwtDetails.setSecret(ReciprocalUtils.generateKey(ReciprocalUtils.Algorithm.AES));
+		jwtDetails.setSecret(ReciprocalUtils.generateKey(""));
 		jwtDetails.setUserPropertys("userPropertys");
 		modelAndView.addObject("model",jwtDetails);
 		return modelAndView;

+ 5 - 5
maxkey-webs/maxkey-web-mgt/src/main/resources/messages/message.properties

@@ -204,10 +204,10 @@ userinfo.status.lock=\u9501\u5B9A
 userinfo.status.inactive=\u4E0D\u6D3B\u52A8
 userinfo.status.delete=\u5DF2\u5220\u9664
 userinfo.userstate=\u7528\u6237\u72B6\u6001
-userinfo.userstate.resident=\u5728\u518C\u4EBA\u5458
-userinfo.userstate.withdrawn=\u79BB\u804C\u4EBA\u5458
-userinfo.userstate.inactive=\u505C\u85AA\u7559\u804C\u4EBA\u5458
-userinfo.userstate.retiree=\u9000\u4F11\u4EBA\u5458
+userinfo.userstate.resident=\u5728\u804C
+userinfo.userstate.withdrawn=\u79BB\u804C
+userinfo.userstate.inactive=\u505C\u85AA\u7559\u804C
+userinfo.userstate.retiree=\u9000\u4F11
 
 userinfo.authnType=\u767B\u5F55\u65B9\u5F0F
 userinfo.authnType.authnType.1=\u666E\u901A\u767B\u5F55
@@ -361,7 +361,7 @@ apps.jwt.content=\u4EE4\u724C\u5185\u5BB9
 apps.jwt.expires=\u8FC7\u671F\u65F6\u95F4
 #SAML
 apps.saml.metadata.company=\u516C\u53F8
-apps.saml.spAcsUrl=SP ACS Url
+apps.saml.spAcsUrl=ACS Url
 apps.saml.fileType.Certificate=\u8BC1\u4E66
 apps.saml.metadata.orgDisplayName=\u7EC4\u7EC7\u540D\u79F0
 apps.saml.nameIdConvert.original=\u539F\u59CB

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/resources/messages/message_en.properties

@@ -366,7 +366,7 @@ apps.jwt.content=content
 apps.jwt.expires=expires
 #SAML
 apps.saml.metadata.company=company
-apps.saml.spAcsUrl=SP ACS Url
+apps.saml.spAcsUrl=ACS Url
 apps.saml.fileType.Certificate=Certificate
 apps.saml.metadata.orgDisplayName=orgDisplayName
 apps.saml.nameIdConvert.original=original

+ 5 - 5
maxkey-webs/maxkey-web-mgt/src/main/resources/messages/message_zh_CN.properties

@@ -204,10 +204,10 @@ userinfo.status.lock=\u9501\u5B9A
 userinfo.status.inactive=\u4E0D\u6D3B\u52A8
 userinfo.status.delete=\u5DF2\u5220\u9664
 userinfo.userstate=\u7528\u6237\u72B6\u6001
-userinfo.userstate.resident=\u5728\u518C\u4EBA\u5458
-userinfo.userstate.withdrawn=\u79BB\u804C\u4EBA\u5458
-userinfo.userstate.inactive=\u505C\u85AA\u7559\u804C\u4EBA\u5458
-userinfo.userstate.retiree=\u9000\u4F11\u4EBA\u5458
+userinfo.userstate.resident=\u5728\u804C
+userinfo.userstate.withdrawn=\u79BB\u804C
+userinfo.userstate.inactive=\u505C\u85AA\u7559\u804C
+userinfo.userstate.retiree=\u9000\u4F11
 
 userinfo.authnType=\u767B\u5F55\u65B9\u5F0F
 userinfo.authnType.authnType.1=\u666E\u901A\u767B\u5F55
@@ -361,7 +361,7 @@ apps.jwt.content=\u4EE4\u724C\u5185\u5BB9
 apps.jwt.expires=\u8FC7\u671F\u65F6\u95F4
 #SAML
 apps.saml.metadata.company=\u516C\u53F8
-apps.saml.spAcsUrl=SP ACS Url
+apps.saml.spAcsUrl=ACS Url
 apps.saml.fileType.Certificate=\u8BC1\u4E66
 apps.saml.metadata.orgDisplayName=\u7EC4\u7EC7\u540D\u79F0
 apps.saml.nameIdConvert.original=\u539F\u59CB

+ 28 - 31
maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/appAddCommon.ftl

@@ -6,29 +6,36 @@
          <td colspan=4><h5><@locale code="apps.basic.info"/></h5></td>
       </tr>
       <tr>
-         <th><@locale code="apps.id"/></th>
-         <td>
-         	<span id="id_text"  style="width:100%;font-weight: bold;">${model.id!}</span>
-            <input type="hidden"  class="form-control" id="id" name="id"  title="" value="${model.id!}"/>
+         <th style="width:15%;"><@locale code="apps.id"/></th>
+         <td style="width:35%;">
+            <input type="text" readonly class="form-control" id="id" name="id"  title="" value="${model.id!}"/>
          </td>
-         <th><@locale code="apps.secret"/></th>
-         <td>
-         	<span id="secret_text"  style="width:100%;font-weight: bold;">${model.secret!}</span>
-            <input type="hidden" class="form-control"  id="secret" name="secret"  title="" value="${model.secret!}"/>
+         <th style="width:15%;"><@locale code="apps.secret"/></th>
+         <td style="width:35%;">
+            <input type="text" readonly class="form-control"  id="secret" name="secret"  title="" value="${model.secret!}"/>
          </td>
       </tr>
        <tr>
          <th><@locale code="apps.name"/></th>
-         <td colspan="3">
+         <td>
             <input type="text"class="form-control"  id="name" name="name"  size="100"  title="" value=""  required=""   />
          </td>
+         <th><@locale code="apps.icon"/></th>
+         <td>
+            <input  type="file" id="iconFile" class="form-control"  name="iconFile"  title="" value=""/>
+         </td>
       </tr>
       <tr>
          <th><@locale code="apps.loginUrl"/></th>
          <td colspan="3">
-            <input type="text" class="form-control"  id="loginUrl" name="loginUrl" size="100"  title="" value=""  required=""   />
+            <div class="input-group" >
+                <input type="text" class="form-control"  id="loginUrl" name="loginUrl" size="100"  title="" value=""  required=""   />
+                <input  class="button btn btn-primary  btn-collapse"  id="advancedSearchExpandBtn" type="button" size="50"  value="<@locale code="button.text.expandsearch"/>" collapseId="#basic_info" expandValue="<@locale code="button.text.expandsearch"/>"  collapseValue="<@locale code="button.text.collapsesearch"/>">
+            </div> 
          </td>
       </tr>
+      </tbody>
+      <tbody id="basic_info" style="display:none" >
       <tr>
          <th><@locale code="apps.logoutUrl"/></th>
          <td>
@@ -44,20 +51,25 @@
          </td>
       </tr>
       <tr>
-         <th style="width:15%;"><@locale code="apps.protocol"/></th>
-         <td style="width:35%;" id="app_protocol_control">
+         <th ><@locale code="apps.protocol"/></th>
+         <td  id="app_protocol_control">
          	<span  id="protocol_text" >${model.protocol!}</span>
             <input type="hidden"class="form-control"  id="protocol" name="protocol"  title="" value="${model.protocol!}"/>
          </td>
-         <th style="width:15%;"><@locale code="apps.category"/></th>
-         <td style="width:35%;">
+         <th ><@locale code="apps.category"/></th>
+         <td>
             <input type="text"class="form-control"  id="category" name="category"  title="" value="${model.category!}"/>
          </td>
       </tr>
       <tr>
-         <th><@locale code="apps.icon"/></th>
+         <th><@locale code="apps.visible"/></th>
          <td>
-            <input  type="file" id="iconFile" class="form-control"  name="iconFile"  title="" value=""/>
+            <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>
+                <option value="3" ><@locale code="apps.visible.intranet"/></option>
+            </select>
          </td>
          <th><@locale code="common.text.sortindex"/></th>
          <td>
@@ -75,21 +87,6 @@
          </td>
       </tr>
       <tr>
-      	<th><@locale code="apps.visible"/></th>
-         <td>
-         	<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>
-				<option value="3" ><@locale code="apps.visible.intranet"/></option>
-			</select>
-         </td>
-         <th><@locale code="common.text.description"/></th>
-         <td>
-            <input  type="text" class="form-control"  id="description" name="description"  title="" value=""/>
-         </td>
-      </tr>
-      <tr>
 		<th><@locale code="apps.isAdapter" /></th>
 		<td>
 			<select  id="isAdapter" name="isAdapter"  class="form-control  form-select"  >

+ 29 - 27
maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/appUpdateCommon.ftl

@@ -7,8 +7,15 @@
       <tr>
          <th style="width:15%;"><@locale code="apps.id"/></th>
          <td style="width:35%;">
-         	<div style="width:100%;font-weight: bold;">${model.id!}</div>
-            <input type="hidden" id="id" name="id"  title="" value="${model.id!}"/>
+            <div class="input-group">
+                <input class="form-control" type="text"  readonly  id="id" name="id"  title="" value="${model.id!}"/>
+                <input class="button btn btn-primary mr-3 window" style="float: left;" id="addExtendAttrBtn" type="button" 
+                        value="<@locale code="apps.extendAttr"/>" 
+                        wurl="<@base/>/apps/forwardAppsExtendAttr/${model.id!}"
+                        wwidth="900"
+                        wheight="650"
+                        target="window">
+            </div>
             <input type="hidden" id="status" name="status"  title="" value="${model.status!}"/>
          </td>
          <th style="width:15%;"><@locale code="apps.secret"/></th>
@@ -21,16 +28,25 @@
       </tr>
       <tr>
          <th><@locale code="apps.name"/></th>
-         <td  colspan="3">
-            <input type="text" class="form-control" id="name" name="name"  title="" value="${model.name!}"  required="" />
+         <td>
+            <input type="text" class="form-control" id="name" name="name"  title="" value="${model.name!}"  required="" /> 
          </td>
+        <th><@locale code="apps.icon"/></th>
+        <td>
+            <img id="iconFileImg" height='30' src='<@base/>/image/${model.id!}'/>
+        </td>
       </tr>
       <tr>
          <th><@locale code="apps.loginUrl"/></th>
          <td colspan="3">
-            <input type="text" class="form-control" id="loginUrl" name="loginUrl"  title="" value="${model.loginUrl!}"  required="" />
+            <div class="input-group" >
+                <input type="text" class="form-control" id="loginUrl" name="loginUrl"  title="" value="${model.loginUrl!}"  required="" />
+                <input  class="button btn btn-primary btn-collapse"  type="button" size="50"  value="<@locale code="button.text.expandsearch"/>" collapseId="#basic_info" expandValue="<@locale code="button.text.expandsearch"/>"  collapseValue="<@locale code="button.text.collapsesearch"/>">
+            </div>
          </td>
       </tr>
+      </tbody>
+      <tbody id="basic_info" style="display:none" >
       <tr>
          <th><@locale code="apps.logoutUrl"/></th>
          <td>
@@ -56,8 +72,14 @@
          </td>
       </tr>
       <tr>
-         <th><@locale code="apps.icon"/></th>
-         <td><img id="iconFileImg" height='30' src='<@base/>/image/${model.id!}'/>
+        <th><@locale code="apps.visible"/></th>
+        <td>
+            <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>
+                <option value="3"  <#if 3==model.visible!>selected</#if> ><@locale code="apps.visible.intranet"/></option>
+            </select>
          </td>
          <th><@locale code="common.text.sortindex"/></th>
          <td>
@@ -74,26 +96,6 @@
             <input type="text" class="form-control" id="vendorUrl" name="vendorUrl"  title="" value="${model.vendorUrl!}"/>
          </td>
       </tr>
-      <tr>
-      	<th><@locale code="apps.visible"/></th>
-         <td>
-         	<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>
-				<option value="3"  <#if 3==model.visible!>selected</#if> ><@locale code="apps.visible.intranet"/></option>
-			</select>
-         </td>
-         <th><@locale code="apps.extendAttr"/></th>
-         <td>
-         	<input class="button btn btn-primary mr-3 window" style="float: left;" id="addExtendAttrBtn" type="button" 
-         			value="<@locale code="button.text.select"/>" 
-		 		    wurl="<@base/>/apps/forwardAppsExtendAttr/${model.id!}"
-		 		    wwidth="900"
-		 		    wheight="650"
-	 		    	target="window">
-		 </td>
-	 </tr>
 	 <tr>
 		<th><@locale code="apps.isAdapter" /></th>
 		<td>

+ 16 - 16
maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/oauth20/appAdd.ftl

@@ -79,15 +79,15 @@
 					<td >
 						<table class="hidetable"  style="width:100%;">
 							<tr>
-								<td>read<input type="checkbox" id="scope_trust" name="scope" value="read"  checked /></td>
-								<td>write<input type="checkbox" id="scope_write" name="scope" value="write"/></td>
-								<td>trust<input type="checkbox" id="scope_trust" name="scope" value="trust"/></td>
-								<td>openid<input type="checkbox" id="scope_openid" name="scope" value="openid"/></td>
-								<td>profile<input type="checkbox" id="scope_profile" name="scope" value="profile"/></td>
-								<td>email<input type="checkbox" id="scope_email" name="scope" value="email"/></td>
-								<td>phone<input type="checkbox" id="scope_phone" name="scope" value="phone"/></td>
-								<td>address<input type="checkbox" id="scope_address" name="scope" value="address"/></td>
-								<td>all<input type="checkbox" id="scope_all" name="scope" value="all"/></td>
+								<td>read    <input  class="form-check-input" type="checkbox" id="scope_trust" name="scope" value="read"  checked /></td>
+								<td>write   <input  class="form-check-input" type="checkbox" id="scope_write" name="scope" value="write"/></td>
+								<td>trust   <input  class="form-check-input" type="checkbox" id="scope_trust" name="scope" value="trust"/></td>
+								<td>openid  <input  class="form-check-input" type="checkbox" id="scope_openid" name="scope" value="openid"/></td>
+								<td>profile <input  class="form-check-input" type="checkbox" id="scope_profile" name="scope" value="profile"/></td>
+								<td>email   <input  class="form-check-input" type="checkbox" id="scope_email" name="scope" value="email"/></td>
+								<td>phone   <input  class="form-check-input" type="checkbox" id="scope_phone" name="scope" value="phone"/></td>
+								<td>address <input  class="form-check-input" type="checkbox" id="scope_address" name="scope" value="address"/></td>
+								<td>all     <input  class="form-check-input" type="checkbox" id="scope_all" name="scope" value="all"/></td>
 								
 							</tr>
 						</table>
@@ -98,13 +98,13 @@
 					<td  colspan="3">
 						<table  class="hidetable"  style="width:100%;">
 							<tr>
-								<td>authorization_code | code<input type="checkbox" id="grantTypes_authorization_code" name="authorizedGrantTypes" value="authorization_code"  checked /></td>
-								<td>password<input type="checkbox" id="grantTypes_trust" name="authorizedGrantTypes" value="password"/></td>
-								<td>implicit<input type="checkbox" id="grantTypes_implicit" name="authorizedGrantTypes" value="implicit"/></td>
-								<td>client_credentials<input type="checkbox" id="grantTypes_client_credentials" name="authorizedGrantTypes" value="client_credentials"/></td>
-								<td>refresh_token<input type="checkbox" id="grantTypes_refresh_token" name="authorizedGrantTypes" value="refresh_token"/></td>
-								<td>id_token<input  type="checkbox" id="grantTypes_id_token" name="authorizedGrantTypes" value="id_token"/></td>
-								<td>token<input type="checkbox" id="grantTypes_token" name="authorizedGrantTypes" value="token"/></td>
+								<td>authorization_code  <input  class="form-check-input" type="checkbox" id="grantTypes_authorization_code" name="authorizedGrantTypes" value="authorization_code"  checked /></td>
+								<td>password            <input  class="form-check-input" type="checkbox" id="grantTypes_trust" name="authorizedGrantTypes" value="password"/></td>
+								<td>implicit            <input  class="form-check-input" type="checkbox" id="grantTypes_implicit" name="authorizedGrantTypes" value="implicit"/></td>
+								<td>client_credentials  <input  class="form-check-input" type="checkbox" id="grantTypes_client_credentials" name="authorizedGrantTypes" value="client_credentials"/></td>
+								<td>refresh_token       <input  class="form-check-input" type="checkbox" id="grantTypes_refresh_token" name="authorizedGrantTypes" value="refresh_token"/></td>
+								<td>id_token            <input  class="form-check-input"  type="checkbox" id="grantTypes_id_token" name="authorizedGrantTypes" value="id_token"/></td>
+								<td>token               <input  class="form-check-input" type="checkbox" id="grantTypes_token" name="authorizedGrantTypes" value="token"/></td>
 								
 							</tr>
 						</table>

+ 16 - 17
maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/oauth20/appUpdate.ftl

@@ -66,16 +66,15 @@
 					<td  >
 						<table  class="hidetable"  style="width:100%;">
 							<tr>
-								<td>read<input type="checkbox" id="scope_trust" name="scope" value="read"  <#if   model.scope?contains("read") >checked</#if> /></td>
-								<td>write<input type="checkbox" id="scope_write" name="scope" value="write" <#if   model.scope?contains('write') >checked</#if>/></td>
-								<td>trust<input type="checkbox" id="scope_trust" name="scope" value="trust" <#if   model.scope?contains('trust') >checked</#if>/></td>
-								<td>openid<input type="checkbox" id="scope_openid" name="scope" value="openid" <#if   model.scope?contains('openid') >checked</#if>/></td>
-								<td>profile<input type="checkbox" id="scope_profile" name="scope" value="profile" <#if   model.scope?contains('profile') >checked</#if>/></td>
-								<td>email<input type="checkbox" id="scope_email" name="scope" value="email" <#if   model.scope?contains('email') >checked</#if>/></td>
-								<td>phone<input type="checkbox" id="scope_phone" name="scope" value="phone" <#if   model.scope?contains('phone') >checked</#if>/></td>
-								<td>address<input type="checkbox" id="scope_address" name="scope" value="address" <#if   model.scope?contains('address') >checked</#if>/></td>
-								<td>all<input type="checkbox" id="scope_all" name="scope" value="all" <#if   model.scope?contains('all') >checked</#if>/></td>
-								<td><b class="orange"></b><label for="scope"></label></td>
+								<td>read<input class="form-check-input" type="checkbox" id="scope_trust" name="scope" value="read"  <#if   model.scope?contains("read") >checked</#if> /></td>
+								<td>write<input class="form-check-input"  type="checkbox" id="scope_write" name="scope" value="write" <#if   model.scope?contains('write') >checked</#if>/></td>
+								<td>trust<input class="form-check-input"  type="checkbox" id="scope_trust" name="scope" value="trust" <#if   model.scope?contains('trust') >checked</#if>/></td>
+								<td>openid<input class="form-check-input"  type="checkbox" id="scope_openid" name="scope" value="openid" <#if   model.scope?contains('openid') >checked</#if>/></td>
+								<td>profile<input class="form-check-input"  type="checkbox" id="scope_profile" name="scope" value="profile" <#if   model.scope?contains('profile') >checked</#if>/></td>
+								<td>email<input class="form-check-input"  type="checkbox" id="scope_email" name="scope" value="email" <#if   model.scope?contains('email') >checked</#if>/></td>
+								<td>phone<input class="form-check-input"  type="checkbox" id="scope_phone" name="scope" value="phone" <#if   model.scope?contains('phone') >checked</#if>/></td>
+								<td>address<input class="form-check-input"  type="checkbox" id="scope_address" name="scope" value="address" <#if   model.scope?contains('address') >checked</#if>/></td>
+								<td>all<input class="form-check-input"  type="checkbox" id="scope_all" name="scope" value="all" <#if   model.scope?contains('all') >checked</#if>/></td>
 							</tr>
 						</table>
 					</td>
@@ -85,13 +84,13 @@
 					<td colspan="3">
 						<table  class="hidetable"  style="width:100%;">
 							<tr>
-								<td>authorization_code | code<input <#if   model.authorizedGrantTypes?contains('authorization_code') >checked</#if>  type="checkbox" id="grantTypes_authorization_code" name="authorizedGrantTypes" value="authorization_code"/></td>
-								<td>password<input <#if   model.authorizedGrantTypes?contains('password') >checked</#if>  type="checkbox" id="grantTypes_trust" name="authorizedGrantTypes" value="password"/></td>
-								<td>implicit<input <#if   model.authorizedGrantTypes?contains('implicit') >checked</#if>  type="checkbox" id="grantTypes_implicit" name="authorizedGrantTypes" value="implicit"/></td>
-								<td>client_credentials<input <#if   model.authorizedGrantTypes?contains('client_credentials') >checked</#if>  type="checkbox" id="grantTypes_client_credentials" name="authorizedGrantTypes" value="client_credentials"/></td>
-								<td>refresh_token<input <#if   model.authorizedGrantTypes?contains('refresh_token') >checked</#if>  type="checkbox" id="grantTypes_refresh_token" name="authorizedGrantTypes" value="refresh_token"/></td>
-								<td>id_token<input <#if   model.authorizedGrantTypes?contains('id_token') >checked</#if>  type="checkbox" id="grantTypes_id_token" name="authorizedGrantTypes" value="id_token"/></td>
-								<td>token<input <#if   model.authorizedGrantTypes?contains( 'token') >checked</#if>  type="checkbox" id="grantTypes_token" name="authorizedGrantTypes" value="token"/></td>
+								<td>authorization_code      <input  class="form-check-input"  <#if   model.authorizedGrantTypes?contains('authorization_code') >checked</#if>  type="checkbox" id="grantTypes_authorization_code" name="authorizedGrantTypes" value="authorization_code"/></td>
+								<td>password                <input  class="form-check-input"  <#if   model.authorizedGrantTypes?contains('password') >checked</#if>  type="checkbox" id="grantTypes_trust" name="authorizedGrantTypes" value="password"/></td>
+								<td>implicit                <input  class="form-check-input"  <#if   model.authorizedGrantTypes?contains('implicit') >checked</#if>  type="checkbox" id="grantTypes_implicit" name="authorizedGrantTypes" value="implicit"/></td>
+								<td>client_credentials      <input  class="form-check-input"  <#if   model.authorizedGrantTypes?contains('client_credentials') >checked</#if>  type="checkbox" id="grantTypes_client_credentials" name="authorizedGrantTypes" value="client_credentials"/></td>
+								<td>refresh_token           <input  class="form-check-input"  <#if   model.authorizedGrantTypes?contains('refresh_token') >checked</#if>  type="checkbox" id="grantTypes_refresh_token" name="authorizedGrantTypes" value="refresh_token"/></td>
+								<td>id_token                <input  class="form-check-input"  <#if   model.authorizedGrantTypes?contains('id_token') >checked</#if>  type="checkbox" id="grantTypes_id_token" name="authorizedGrantTypes" value="id_token"/></td>
+								<td>token                   <input  class="form-check-input"  <#if   model.authorizedGrantTypes?contains( 'token') >checked</#if>  type="checkbox" id="grantTypes_token" name="authorizedGrantTypes" value="token"/></td>
 								
 							</tr>
 						</table>

+ 4 - 1
maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/saml20/appAdd.ftl

@@ -147,7 +147,10 @@
 					</td>
 					<th style="width:15%;"><@locale code="apps.saml.validityInterval" /></th>
 					<td style="width:35%;">
-						<input type="text" class="form-control"   id="validityInterval" name="validityInterval"  title="" value="15"  required="" />
+					   <div class="input-group">
+						  <input type="text" class="form-control"   id="validityInterval" name="validityInterval"  title="" value="15"  required="" />
+					       <span class="input-group-text">Seconds</span>
+                        </div>
 					</td>
 					
 				</tr>

+ 10 - 4
maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/saml20/appUpdate.ftl

@@ -148,7 +148,10 @@
 					
 					<th><@locale code="apps.saml.validityInterval" /></th>
 					<td >
-						<input type="text" class="form-control"  id="validityInterval" name="validityInterval"  title="" value="${model.validityInterval}"/>
+					    <div class="input-group">
+						  <input type="text" class="form-control"  id="validityInterval" name="validityInterval"  title="" value="${model.validityInterval}"/>
+						  <span class="input-group-text">Seconds</span>
+                        </div>
 					</td>
 					
 				</tr>
@@ -190,15 +193,18 @@
 				</tr>
 				<tr>
 					<th><@locale code="apps.saml.certIssuer" /></th>
-					<td>${model.certIssuer!}
+					<td>
+					   <input type="text" readonly class="form-control"   title="" value='${model.certIssuer!}'/>
 					</td>
 					<th><@locale code="apps.saml.certExpiration" /></th>
-					<td>${model.certExpiration!}
+					<td>
+					   <input type="text" readonly class="form-control"   title="" value='${model.certExpiration!}'/>
 					</td>
 				</tr>
 				<tr>
 					<th><@locale code="apps.saml.certSubject" /></th>
-					<td  colspan =3>${model.certSubject!}
+					<td  colspan =3>
+					   <input type="text" readonly class="form-control"   title="" value='${model.certSubject!}'/>
 					</td>
 				</tr>
 				<tr>

+ 18 - 5
maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/tokenbased/appAdd.ftl

@@ -4,6 +4,18 @@
 	<#include  "../../layout/header.ftl"/>
 	<#include  "../../layout/common.cssjs.ftl"/>
 	<#include  "../appCommonHead.ftl"/>
+	<#setting number_format="#">
+<script type="text/javascript">
+    <!--
+    $(function(){   
+       $("#tokenbased_algorithm").change(function(){
+        $.post("<@base/>/apps/generate/secret/"+$(this).val(), {_method:"post",currTime:(new Date()).getTime()}, function(data) {
+            $("#algorithmKey").val(data+"");
+        });
+    }); 
+    });
+//-->
+</script>
 </head>
 <body>
 <div  class="container">   
@@ -50,18 +62,16 @@
 							<tr>
 								<th style="width:15%;"><@locale code="apps.tokenbased.algorithm" /></th>
 								<td style="width:35%;">
-									<select id="algorithm" name="algorithm"   class="form-control  form-select">
+									<select id="tokenbased_algorithm" name="algorithm"   class="form-control  form-select">
 										<option value="DES">DES</option>
 										<option value="DESede">DESede</option>
 										<option value="Blowfish">Blowfish</option>
 										<option value="AES"  selected>AES</option>
 									</select>
-									<b class="orange">*</b><label for="algorithm"></label>
 								</td>
 								<th width="140px"><@locale code="apps.tokenbased.algorithmKey" /></th>
 								<td width="340px">
-									<span id="algorithmKey_text">${model.algorithmKey!}</span>
-									<input type="hidden" class="form-control" id="algorithmKey" name="algorithmKey"  title="" value="${model.algorithmKey!}"/>
+									<input type="text" class="form-control" id="algorithmKey" name="algorithmKey"  title="" value="${model.algorithmKey!}"/>
 								
 								</td>
 							</tr>
@@ -72,7 +82,10 @@
 								</td>
 								<th><@locale code="apps.tokenbased.expires" /></th>
 								<td>
-									<input type="text" class="form-control" id="expires" name="expires"  title="" value="1"  required="" />
+								    <div class="input-group">
+									    <input type="text" class="form-control" id="expires" name="expires"  title="" value="1"  required="" />
+								        <span class="input-group-text">Minutes</span>
+								    </div>
 								</td>
 							</tr>
 							<tr>

+ 17 - 4
maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/tokenbased/appUpdate.ftl

@@ -5,6 +5,17 @@
 	<#include  "../../layout/common.cssjs.ftl"/>
 	<#include  "../appCommonHead.ftl"/>
 	<#setting number_format="#">
+	<script type="text/javascript">
+    <!--
+    $(function(){   
+	   $("#tokenbased_algorithm").change(function(){
+        $.post("<@base/>/apps/generate/secret/"+$(this).val(), {_method:"post",currTime:(new Date()).getTime()}, function(data) {
+            $("#algorithmKey").val(data+"");
+        });
+    }); 
+    });
+//-->
+</script>
 </head>
 <body>
 <div  class="container">   
@@ -53,7 +64,7 @@
 								<tr>
 									<th style="width:15%;"><@locale code="apps.tokenbased.algorithm" /></th>
 									<td style="width:35%;">
-										<select id="algorithm" name="algorithm" class="form-control  form-select" >
+										<select id="tokenbased_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>
@@ -62,8 +73,7 @@
 									</td>
 									<th style="width:15%;"><@locale code="apps.tokenbased.algorithmKey" /></th>
 									<td style="width:35%;">
-										<span id="algorithmKey_text">${model.algorithmKey}</span>
-										<input type="hidden" id="algorithmKey" name="algorithmKey"  title="" value="${model.algorithmKey}"/>
+										<input type="text"  class="form-control"  id="algorithmKey" name="algorithmKey"  title="" value="${model.algorithmKey}"/>
 
 									</td>
 								</tr>
@@ -74,7 +84,10 @@
 									</td>
 									<th><@locale code="apps.tokenbased.expires" /></th>
 									<td>
-										<input type="text" class="form-control" id="expires" name="expires"  title="" value="${model.expires}"  required="" />
+									   <div class="input-group">
+										  <input type="text" class="form-control" id="expires" name="expires"  title="" value="${model.expires}"  required="" />
+									       <span class="input-group-text">Minutes</span>
+                                        </div>
 									</td>
 								</tr>
 								

+ 23 - 23
maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/orgs/orgsAdd.ftl

@@ -38,96 +38,96 @@ $(function () {
               <td></td>
            </tr>
            <tr >
-              <td > <@locale code="org.pid" />:</td>
+              <th > <@locale code="org.pid" /></th>
               <td><input type="text"  id="pId" name="parentId"  class="form-control"/></td>
            </tr>
            <tr>
-              <th  width="200px"> <@locale code="org.pname" /></td>
+              <th  width="200px"> <@locale code="org.pname" /></td>
               <td><input type="text"  id="pName" name="parentName"    class="form-control"/></td>
            </tr>
            <tr >
-              <td > <@locale code="org.id" />:</td>
+              <th > <@locale code="org.id" /></th>
               <td><input type="text" id="id" name="id"    class="form-control"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.name" />:</td>
+              <th > <@locale code="org.name" /></th>
               <td><input type="text"  id="name" name="name" required=""    class="form-control"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.fullname" /></td>
+              <td > <@locale code="org.fullname" /></td>
               <td><input type="text"  id="fullName" name="fullName"  required=""   class="form-control"/></td>
            </tr>
             <tr >
-              <td > <@locale code="org.xpath" /> 
+              <td > <@locale code="org.xpath" /> 
               </th>
               <td><input type="text"  id="xPath" name="codePath"    class="form-control"/></td>
            </tr>
            
             <tr >
-              <td > <@locale code="org.xnamepath" /> 
+              <td > <@locale code="org.xnamepath" /> 
               </th>
               <td><input type="text"  id="xNamePath" name="namePath"    class="form-control"/></td>
            </tr>
            
            <tr>
-              <td > <@locale code="org.type" /></td>
+              <td > <@locale code="org.type" /></td>
               <td><input type="text"  id="type" name="type"    class="form-control"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.division" /></td>
+              <td > <@locale code="org.division" /></td>
               <td><input type="text"  id="division" name="division"    class="form-control"/></td>
            </tr>
            <tr>
-              <th >
-                 <@locale code="org.sortorder" /> 
-              </th>
+              <td >
+                 <@locale code="org.sortorder" /> 
+              </td>
               <td><input type="text"  id="sortIndex" name="sortIndex"    class="form-control" value='1'/></td>
            </tr>
           
            <tr>
-              <th ><@locale code="org.description" />:</td>
+              <td ><@locale code="org.description" /></td>
               <td><input type="text"  id="description" name="description"    class="form-control"/></td>
            </tr>
         </table>
         <table id="div_switch_extra"   class="table table-bordered"  style="display:none">
         	<tr>
-              <td > <@locale code="org.contact" /></td>
+              <td > <@locale code="org.contact" /></td>
               <td><input type="text"  id="contact" name="contact"    class="form-control"/></td>
            </tr>
            <tr>
-              <th  width="200px"> <@locale code="org.phone" />:</td>
+              <td  width="200px"> <@locale code="org.phone" /></td>
               <td><input type="text"  id="phone" name="phone"    class="form-control"/></td>
            </tr>
             <tr>
-              <td > <@locale code="org.email" /></td>
+              <td > <@locale code="org.email" /></td>
               <td><input type="text"  id="email" name="email"    class="form-control"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.fax" /></td>
+              <td > <@locale code="org.fax" /></td>
               <td><input type="text"  id="fax" name="fax"    class="form-control"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.country" /></td>
+              <td > <@locale code="org.country" /></td>
               <td><input type="text"  id="country" name="country"    class="form-control"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.region" /></td>
+              <td > <@locale code="org.region" /></td>
               <td><input type="text"  id="region" name="region"    class="form-control"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.locality" /></td>
+              <td > <@locale code="org.locality" /></td>
               <td><input type="text"  id="locality" name="locality"    class="form-control"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.street" /></td>
+              <td > <@locale code="org.street" /></td>
               <td><input type="text"  id="street" name="street"    class="form-control"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.address" /></td>
+              <td > <@locale code="org.address" /></td>
               <td><input type="text"  id="address" name="address"    class="form-control"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.postalcode" /></td>
+              <td > <@locale code="org.postalcode" /></td>
               <td><input type="text"  id="postalCode" name="postalCode"    class="form-control"/></td>
            </tr>
         </table>

+ 23 - 23
maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/orgs/orgsUpdate.ftl

@@ -37,96 +37,96 @@ $(function () {
               <td></td>
            </tr>
            <tr >
-              <td > <@locale code="org.pid" />:</td>
+              <th > <@locale code="org.pid" /></th>
               <td><input type="text" readonly id="pId" name="parentId"  class="form-control" value="${model.parentId!}"/></td>
            </tr>
            <tr>
-              <th  width="200px"> <@locale code="org.pname" /></td>
+              <th  width="200px"> <@locale code="org.pname" /></td>
               <td><input type="text" readonly  id="pName" name="parentName"    class="form-control" value="${model.parentName!}"/></td>
            </tr>
            <tr >
-              <td > <@locale code="org.id" />:</td>
+              <th > <@locale code="org.id" /></th>
               <td><input type="text" id="id" name="id"  required=""    class="form-control" value="${model.id!}"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.name" />:</td>
+              <th > <@locale code="org.name" /></th>
               <td><input type="text"  id="name" name="name"  required=""    class="form-control" value="${model.name!}"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.fullname" /></td>
+              <td > <@locale code="org.fullname" /></td>
               <td><input type="text"  id="fullName" name="fullName"  required=""    class="form-control" value="${model.fullName!}"/></td>
            </tr>
             <tr >
-              <td > <@locale code="org.xpath" /> 
+              <td > <@locale code="org.xpath" /> 
               </th>
               <td><input type="text"  id="xPath" name="codePath"    class="form-control" value="${model.codePath!}"/></td>
            </tr>
            
             <tr >
-              <td > <@locale code="org.xnamepath" /> 
+              <td > <@locale code="org.xnamepath" /> 
               </th>
               <td><input type="text"  id="xNamePath" name="namePath"    class="form-control" value="${model.namePath!}"/></td>
            </tr>
            
            <tr>
-              <td > <@locale code="org.type" /></td>
+              <td > <@locale code="org.type" /></td>
               <td><input type="text"  id="type" name="type"    class="form-control" value="${model.type!}"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.division" /></td>
+              <td > <@locale code="org.division" /></td>
               <td><input type="text"  id="division" name="division"    class="form-control" value="${model.division!}"/></td>
            </tr>
            <tr>
-              <th >
-                 <@locale code="org.sortorder" /> 
-              </th>
+              <td>
+                 <@locale code="org.sortorder" /> 
+              </td>
               <td><input type="text"  id="sortOrder" name="sortIndex"    class="form-control" value="${model.sortIndex!}"/></td>
            </tr>
           
            <tr>
-              <th ><@locale code="org.description" />:</td>
+              <td ><@locale code="org.description" /></td>
               <td><input type="text"  id="description" name="description"    class="form-control" value="${model.description!}"/></td>
            </tr>
         </table>
         <table id="div_switch_extra"   class="table table-bordered"  style="display:none">
         	<tr>
-              <td > <@locale code="org.contact" /></td>
+              <td > <@locale code="org.contact" /></td>
               <td><input type="text"  id="contact" name="contact"    class="form-control" value="${model.contact!}"/></td>
            </tr>
            <tr>
-              <th  width="200px"> <@locale code="org.phone" />:</td>
+              <td  width="200px"> <@locale code="org.phone" /></td>
               <td><input type="text"  id="phone" name="phone"    class="form-control" value="${model.phone!}"/></td>
            </tr>
             <tr>
-              <td > <@locale code="org.email" /></td>
+              <td > <@locale code="org.email" /></td>
               <td><input type="text"  id="email" name="email"    class="form-control" value="${model.email!}"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.fax" /></td>
+              <td > <@locale code="org.fax" /></td>
               <td><input type="text"  id="fax" name="fax"    class="form-control" value="${model.fax!}"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.country" /></td>
+              <td > <@locale code="org.country" /></td>
               <td><input type="text"  id="country" name="country"    class="form-control" value="${model.country!}"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.region" /></td>
+              <td > <@locale code="org.region" /></td>
               <td><input type="text"  id="region" name="region"    class="form-control" value="${model.region!}"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.locality" /></td>
+              <td > <@locale code="org.locality" /></td>
               <td><input type="text"  id="locality" name="locality"    class="form-control" value="${model.locality!}"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.street" /></td>
+              <td > <@locale code="org.street" /></td>
               <td><input type="text"  id="street" name="street"    class="form-control" value="${model.street!}"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.address" /></td>
+              <td > <@locale code="org.address" /></td>
               <td><input type="text"  id="address" name="address"    class="form-control" value="${model.address!}"/></td>
            </tr>
            <tr>
-              <td > <@locale code="org.postalcode" /></td>
+              <td > <@locale code="org.postalcode" /></td>
               <td><input type="text"  id="postalCode" name="postalCode"    class="form-control" value="${model.postalCode!}"/></td>
            </tr>
         </table>

+ 5 - 11
maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/userinfo/userAdd.ftl

@@ -49,19 +49,19 @@
 			 <table id="div_table_switch_basic" width="980" class="table table-bordered" >
 	<tbody>				
 	<tr>
-		<td style="width:15%;"><@locale code="userinfo.username" /></td>
+		<th style="width:15%;"><@locale code="userinfo.username" /></th>
 		<td style="width:35%;">
 			<input type="hidden" id="id" name="id" value=""/>
 			<input type="hidden" id="status" name="status" value="1"/>
 			<input  class="form-control"  type="text" required="" id="username" name="username"  title="" value=""/>
 		</td>
-		<td style="width:15%;"><@locale code="login.text.password" /></td>
-		<td style="width:35%;">
+		<th style="width:15%;"><@locale code="login.text.password" /></th>
+		<th style="width:35%;">
 		  <div class="input-group" style="vertical-align middle;">
 			<input  class="form-control"  type="password" required="" id="password" name="password"  title="" value=""/>
 			<i class="passwdeye fa fa-eye-slash fa-2" style="left: 290px; color: gainsboro;" refid="password" ></i>
 		  </div>
-		</td>
+		</th>
 	</tr>
 	<tr>
 			<td style="width:15%;"><@locale code="userinfo.employeeNumber" /></td>
@@ -107,7 +107,7 @@
 		
 	</tr>
 	<tr>
-		<td><@locale code="userinfo.displayName" /></td>
+		<th><@locale code="userinfo.displayName" /></th>
 		<td>
 			<input class="form-control"  type="text" required="" id="displayName" name="displayName"  title="" value=""/>
 		</td>
@@ -153,12 +153,6 @@
 			<input class="form-control"  type="text" id="birthDate" name="birthDate"  title="" value=""/>
 		</td>
 	</tr>
-
-	<tr>
-		<td colspan="4">&nbsp;
-		</td>
-		
-	</tr>
 	<tr>
 		<td><@locale code="userinfo.preferredLanguage" /></td>
 		<td>

+ 2 - 8
maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/userinfo/userUpdate.ftl

@@ -45,7 +45,7 @@
 			 <table id="div_table_switch_basic" width="980" class="table table-bordered" >
 	<tbody>				
 	<tr>
-		<td style="width:15%;"><@locale code="userinfo.username" /></td>
+		<th style="width:15%;"><@locale code="userinfo.username" /></th>
 		<td style="width:35%;">
 			<input type="hidden" id="id" name="id" value="${model.id!""}"/>
 			<input  class="form-control"  type="text" id="username" name="username"  title="" value="${model.username!""}"/>
@@ -103,7 +103,7 @@
 		
 	</tr>
 	<tr>
-		<td><@locale code="userinfo.displayName" /></td>
+		<th><@locale code="userinfo.displayName" /></th>
 		<td>
 			<input class="form-control"  type="text" id="displayName" name="displayName"  title="" value="${model.displayName!""}"/>
 		</td>
@@ -149,12 +149,6 @@
 			<input class="form-control"  type="text" id="birthDate" name="birthDate"  title="" value="${model.birthDate!""}"/>
 		</td>
 	</tr>
-
-	<tr>
-		<td colspan="4">&nbsp;
-		</td>
-		
-	</tr>
 	<tr>
 		<td><@locale code="userinfo.preferredLanguage" /></td>
 		<td>

+ 10 - 1
maxkey-webs/maxkey-web-resources/src/main/resources/static/javascript/platform.common.js

@@ -45,7 +45,16 @@ $(function(){
         }
     });
     
-	
+    //btn-collapse toggle collapseId
+    $(".btn-collapse").click(function(){
+        $($(this).attr("collapseId")).toggle();
+        if($($(this).attr("collapseId")).is(":visible")){
+            $(this).val($(this).attr("collapseValue"));
+        }else{
+            $(this).val($(this).attr("expandValue"));
+        }
+    });
+    	
     /*side-nav-menu side navigation*/
     if($('#side-nav-menu').length > 0){
         $('#side-nav-menu').metisMenu();