Synchronizers,user status,cas expires

Synchronizers,user status,cas expires
This commit is contained in:
MaxKey
2021-05-09 11:20:28 +08:00
parent 6cad4e7f7d
commit 7fe786773c
51 changed files with 3502 additions and 444 deletions

View File

@@ -0,0 +1,96 @@
/*
* Copyright [2021] [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.contorller;
import org.apache.mybatis.jpa.persistence.JpaPageResults;
import org.maxkey.constants.ConstantsOperateMessage;
import org.maxkey.entity.Synchronizers;
import org.maxkey.persistence.service.SynchronizersService;
import org.maxkey.web.WebContext;
import org.maxkey.web.message.Message;
import org.maxkey.web.message.MessageType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping(value={"/synchronizers"})
public class SynchronizersController {
final static Logger _logger = LoggerFactory.getLogger(SynchronizersController.class);
@Autowired
@Qualifier("synchronizersService")
SynchronizersService synchronizerssService;
@RequestMapping(value={"/list"})
public ModelAndView groupsList(){
return new ModelAndView("synchronizers/synchronizersList");
}
@RequestMapping(value = { "/grid" })
@ResponseBody
public JpaPageResults<Synchronizers> queryDataGrid(@ModelAttribute("synchronizers") Synchronizers synchronizers) {
_logger.debug(""+synchronizers);
return synchronizerssService.queryPageResults(synchronizers);
}
@RequestMapping(value = { "/forwardUpdate/{id}" })
public ModelAndView forwardUpdate(@PathVariable("id") String id) {
ModelAndView modelAndView=new ModelAndView("synchronizers/synchronizerUpdate");
Synchronizers synchronizers=synchronizerssService.get(id);
modelAndView.addObject("model",synchronizers);
return modelAndView;
}
/**
* 修改
* @param group
* @return
*/
@ResponseBody
@RequestMapping(value={"/update"})
public Message update(@ModelAttribute("synchronizers") Synchronizers synchronizers) {
_logger.debug("-update synchronizers :" + synchronizers);
if (synchronizerssService.update(synchronizers)) {
return new Message(WebContext.getI18nValue(ConstantsOperateMessage.UPDATE_SUCCESS),MessageType.success);
} else {
return new Message(WebContext.getI18nValue(ConstantsOperateMessage.UPDATE_ERROR),MessageType.error);
}
}
}

View File

@@ -42,6 +42,7 @@ common.text.status.validated=\u6709\u6548
common.text.status.inactive=\u4e0d\u6d3b\u52a8
common.text.status.activate=\u6d3b\u52a8
common.text.status.approved=\u6279\u51c6
common.text.status.apply=\u7533\u8BF7
common.text.status.stop=\u505c\u6b62
common.text.status.enabled=\u542f\u7528
common.text.status.disabled=\u505c\u7528
@@ -166,7 +167,7 @@ userinfo.preferredLanguage=\u8bed\u97f3\u504f\u597d
userinfo.timeZone=\u65f6\u533a
userinfo.locale=\u8bed\u8a00\u9009\u62e9
userinfo.employeeNumber=\u5458\u5de5\u7f16\u53f7
userinfo.windowsAccount=AD\u57df\u8d26\u53f7
userinfo.windowsAccount=Windows\u57df\u8d26\u53f7
userinfo.organization=\u6240\u5c5e\u673a\u6784
userinfo.division=\u5206\u652f\u673a\u6784
userinfo.department=\u90e8\u95e8\u540d\u79f0
@@ -195,11 +196,16 @@ userinfo.homeFax=\u5bb6\u5ead\u4f20\u771f
userinfo.homePhoneNumber=\u5bb6\u5ead\u7535\u8bdd
userinfo.homeEmail=\u5bb6\u5ead\u90ae\u7bb1
userinfo.ims=\u5373\u65f6\u901a\u8baf
userinfo.status=\u7528\u6237\u72b6\u6001
userinfo.status.active=\u5728\u518c\u4eba\u5458
userinfo.status.withdrawn=\u79bb\u804c\u4eba\u5458
userinfo.status.inactive=\u505c\u85aa\u7559\u804c\u4eba\u5458
userinfo.status.retiree=\u9000\u4f11\u4eba\u5458
userinfo.status=\u72b6\u6001
userinfo.status.active=\u6D3B\u52A8
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.authnType=\u767b\u5f55\u65b9\u5f0f
userinfo.authnType.authnType.1=\u666e\u901a\u767b\u5f55
@@ -325,18 +331,7 @@ apps.formbased.parameter.value=\u53c2\u6570\u503c
apps.cas.info=CAS\u8ba4\u8bc1
apps.cas.service=\u670d\u52a1
apps.cas.callbackUrl=\u56de\u8c03\u5730\u5740
#desktop
apps.desktop.info=\u684c\u9762\u8ba4\u8bc1
apps.desktop.programPath=\u5e94\u7528\u5b89\u88c5\u8def\u5f84
apps.desktop.parameter=\u5e94\u7528\u53c2\u6570
apps.desktop.usernameType=\u7528\u6237\u7c7b\u578b
apps.desktop.usernameParameter=\u7528\u6237\u53c2\u6570
apps.desktop.preUsername=\u7528\u6237\u540d\u524d\u671f
apps.desktop.passwordType=\u51ed\u8bc1\u7c7b\u578b
apps.desktop.passwordParameter=\u51ed\u8bc1\u53c2\u6570
apps.desktop.prePassword=\u51ed\u8bc1\u524d\u671f
apps.desktop.submitType=\u63d0\u4ea4\u7c7b\u578b
apps.desktop.preSubmit=\u63d0\u4ea4\u524d\u671f
apps.cas.expires=\u8fc7\u671f\u65f6\u95f4
#tokenbased
apps.tokenbased.info=\u4ee4\u724c\u8ba4\u8bc1
apps.tokenbased.redirectUri=\u8ba4\u8bc1\u5730\u5740
@@ -456,6 +451,23 @@ account.appId=\u5e94\u7528\u7f16\u53f7
account.appName=\u5e94\u7528\u540d\u79f0
account.relatedUsername=\u7528\u6237\u8d26\u53f7
account.relatedPassword=\u8d26\u53f7\u5bc6\u7801
#synchronizers
synchronizers.id=\u7F16\u53F7
synchronizers.name=\u540C\u6B65\u5668\u540D\u79F0
synchronizers.sourceType=\u6765\u6E90
synchronizers.scheduler=\u4EFB\u52A1\u5B9A\u65F6
synchronizers.filters=\u8FC7\u6EE4
synchronizers.providerUrl=\u5730\u5740
synchronizers.driverClass=\u9A71\u52A8
synchronizers.principal=\u8D26\u53F7
synchronizers.credentials=\u51ED\u8BC1
synchronizers.basedn=\u57FA\u672Cdn
synchronizers.ssl=\u652F\u6301ssl
synchronizers.trustStore=\u8BC1\u4E66\u8DEF\u5F84
synchronizers.trustStorePassword=\u8BC1\u4E66\u5BC6\u94A5
synchronizers.resumeTime=\u6062\u590D\u65F6\u95F4
synchronizers.suspendTime=\u6302\u8D77\u65F6\u95F4
button.text.action=\u8bbf\u95ee
button.text.visit=\u8bbf\u95ee
@@ -549,4 +561,5 @@ navs.role.member=\u89d2\u8272\u7528\u6237
navs.role.permissions=\u89d2\u8272\u6743\u9650\u7ba1\u7406
navs.resources=\u8d44\u6e90\u7ba1\u7406
navs.adapters=\u9002\u914D\u5668\u6CE8\u518C
navs.notices=\u901A\u77E5\u516C\u544A
navs.notices=\u901A\u77E5\u516C\u544A
navs.synchronizers=\u540C\u6B65\u5668

View File

@@ -42,6 +42,7 @@ common.text.status.validated=validated
common.text.status.inactive=inactive
common.text.status.activate=activate
common.text.status.approved=approved
common.text.status.apply=apply
common.text.status.stop=stop
common.text.status.enabled=enabled
common.text.status.disabled=disabled
@@ -195,11 +196,17 @@ userinfo.homeFax=homeFax
userinfo.homePhoneNumber=homePhoneNumber
userinfo.homeEmail=homeEmail
userinfo.ims=IMS
userinfo.status=userStatus
userinfo.status.active=active
userinfo.status.withdrawn=withdrawn
userinfo.status.inactive=inactive
userinfo.status.retiree=retiree
userinfo.status=Status
userinfo.status.active=Active
userinfo.status.lock=Locked
userinfo.status.inactive=Inactive
userinfo.status.delete=Deleted
userinfo.userstate=UserState
userinfo.userstate.resident=Resident
userinfo.userstate.withdrawn=Withdrawn
userinfo.userstate.inactive=Inactive
userinfo.userstate.retiree=Retiree
userinfo.authnType=AuthenticationType
userinfo.authnType.authnType.1=General login
@@ -322,20 +329,9 @@ apps.formbased.authorizeView=authorizeView
#cas
apps.cas.info=CAS Info
apps.cas.service=service
apps.cas.service=Service
apps.cas.callbackUrl=CallbackUrl
#desktop
apps.desktop.info=Desktop Info
apps.desktop.programPath=programPath
apps.desktop.parameter=parameter
apps.desktop.usernameType=usernameType
apps.desktop.usernameParameter=usernameParameter
apps.desktop.preUsername=preUsername
apps.desktop.passwordType=passwordType
apps.desktop.passwordParameter=passwordParameter
apps.desktop.prePassword=prePassword
apps.desktop.submitType=submitType
apps.desktop.preSubmit=preSubmit
apps.cas.expires=Expires
#tokenbased
apps.tokenbased.info=tokenbased Info
apps.tokenbased.redirectUri=redirectUri
@@ -455,6 +451,25 @@ account.appId=appId
account.appName=appName
account.relatedUsername=relatedUsername
account.relatedPassword=relatedPassword
#synchronizers
synchronizers.id=id
synchronizers.name=name
synchronizers.sourceType=sourceType
synchronizers.scheduler=scheduler
synchronizers.filters=filters
synchronizers.providerUrl=providerUrl
synchronizers.driverClass=driverClass
synchronizers.principal=principal
synchronizers.credentials=credentials
synchronizers.basedn=basedn
synchronizers.ssl=ssl
synchronizers.trustStore=trustStore
synchronizers.trustStorePassword=trustStorePassword
synchronizers.resumeTime=resumeTime
synchronizers.suspendTime=suspendTime
button.text.action=Action
button.text.visit=Visit
@@ -548,4 +563,5 @@ navs.role.member=RoleMember
navs.role.permissions=Permissions
navs.resources=Resources
navs.adapters=Adapters
navs.notices=Notices
navs.notices=Notices
navs.synchronizers=Synchronizers

View File

@@ -42,6 +42,7 @@ common.text.status.validated=\u6709\u6548
common.text.status.inactive=\u4e0d\u6d3b\u52a8
common.text.status.activate=\u6d3b\u52a8
common.text.status.approved=\u6279\u51c6
common.text.status.apply=\u7533\u8BF7
common.text.status.stop=\u505c\u6b62
common.text.status.enabled=\u542f\u7528
common.text.status.disabled=\u505c\u7528
@@ -166,7 +167,7 @@ userinfo.preferredLanguage=\u8bed\u97f3\u504f\u597d
userinfo.timeZone=\u65f6\u533a
userinfo.locale=\u8bed\u8a00\u9009\u62e9
userinfo.employeeNumber=\u5458\u5de5\u7f16\u53f7
userinfo.windowsAccount=AD\u57df\u8d26\u53f7
userinfo.windowsAccount=Windows\u57df\u8d26\u53f7
userinfo.organization=\u6240\u5c5e\u673a\u6784
userinfo.division=\u5206\u652f\u673a\u6784
userinfo.department=\u90e8\u95e8\u540d\u79f0
@@ -195,11 +196,16 @@ userinfo.homeFax=\u5bb6\u5ead\u4f20\u771f
userinfo.homePhoneNumber=\u5bb6\u5ead\u7535\u8bdd
userinfo.homeEmail=\u5bb6\u5ead\u90ae\u7bb1
userinfo.ims=\u5373\u65f6\u901a\u8baf
userinfo.status=\u7528\u6237\u72b6\u6001
userinfo.status.active=\u5728\u518c\u4eba\u5458
userinfo.status.withdrawn=\u79bb\u804c\u4eba\u5458
userinfo.status.inactive=\u505c\u85aa\u7559\u804c\u4eba\u5458
userinfo.status.retiree=\u9000\u4f11\u4eba\u5458
userinfo.status=\u72b6\u6001
userinfo.status.active=\u6D3B\u52A8
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.authnType=\u767b\u5f55\u65b9\u5f0f
userinfo.authnType.authnType.1=\u666e\u901a\u767b\u5f55
@@ -324,18 +330,7 @@ apps.formbased.parameter.value=\u53c2\u6570\u503c
apps.cas.info=CAS\u8ba4\u8bc1
apps.cas.service=\u670d\u52a1
apps.cas.callbackUrl=\u56de\u8c03\u5730\u5740
#desktop
apps.desktop.info=\u684c\u9762\u8ba4\u8bc1
apps.desktop.programPath=\u5e94\u7528\u5b89\u88c5\u8def\u5f84
apps.desktop.parameter=\u5e94\u7528\u53c2\u6570
apps.desktop.usernameType=\u7528\u6237\u7c7b\u578b
apps.desktop.usernameParameter=\u7528\u6237\u53c2\u6570
apps.desktop.preUsername=\u7528\u6237\u540d\u524d\u671f
apps.desktop.passwordType=\u51ed\u8bc1\u7c7b\u578b
apps.desktop.passwordParameter=\u51ed\u8bc1\u53c2\u6570
apps.desktop.prePassword=\u51ed\u8bc1\u524d\u671f
apps.desktop.submitType=\u63d0\u4ea4\u7c7b\u578b
apps.desktop.preSubmit=\u63d0\u4ea4\u524d\u671f
apps.cas.expires=\u8fc7\u671f\u65f6\u95f4
#tokenbased
apps.tokenbased.info=\u4ee4\u724c\u8ba4\u8bc1
apps.tokenbased.redirectUri=\u8ba4\u8bc1\u5730\u5740
@@ -449,6 +444,23 @@ resource.resourceUrl=\u8d44\u6e90\u5730\u5740
resource.resourceAction=\u52a8\u4f5c
resource.resourceStyle=\u6837\u5f0f
#synchronizers
synchronizers.id=\u7F16\u53F7
synchronizers.name=\u540C\u6B65\u5668\u540D\u79F0
synchronizers.sourceType=\u6765\u6E90
synchronizers.scheduler=\u4EFB\u52A1\u5B9A\u65F6
synchronizers.filters=\u8FC7\u6EE4
synchronizers.providerUrl=\u5730\u5740
synchronizers.driverClass=\u9A71\u52A8
synchronizers.principal=\u8D26\u53F7
synchronizers.credentials=\u51ED\u8BC1
synchronizers.basedn=\u57FA\u672Cdn
synchronizers.ssl=\u652F\u6301ssl
synchronizers.trustStore=\u8BC1\u4E66\u8DEF\u5F84
synchronizers.trustStorePassword=\u8BC1\u4E66\u5BC6\u94A5
synchronizers.resumeTime=\u6062\u590D\u65F6\u95F4
synchronizers.suspendTime=\u6302\u8D77\u65F6\u95F4
#account
account.username=\u7528\u6237\u540d
account.displayName=\u7528\u6237\u59d3\u540d
@@ -550,3 +562,4 @@ navs.role.permissions=\u89d2\u8272\u6743\u9650\u7ba1\u7406
navs.resources=\u8d44\u6e90\u7ba1\u7406
navs.adapters=\u9002\u914D\u5668\u6CE8\u518C
navs.notices=\u901A\u77E5\u516C\u544A
navs.synchronizers=\u540C\u6B65\u5668

View File

@@ -128,7 +128,7 @@ $(function(){
}, settings || {});
var winContent="<iframe " +
"scrolling='no' " +
"scrolling='yes' " +
"frameborder='0' " +
"width='"+settings.width+"' " +
"height='"+settings.height+"' " +
@@ -439,6 +439,8 @@ $(function(){
if($(this).attr("target")&&$(this).attr("target")=="forward"){
$.forward($(this).attr("wurl")+"/"+selectId);
}if($(this).attr("target")&&$(this).attr("target")=="_blank"){
window.open($(this).attr("wurl")+"/"+selectId);
}else{
var settings={
url : $(this).attr("wurl")+"/"+selectId,//window url

View File

@@ -51,6 +51,13 @@ $(function(){
<input type="text" class="form-control" id="callbackUrl" name="callbackUrl" title="" value="" required="" />
</td>
</tr>
<tr>
<th style="width:15%;"><@locale code="apps.cas.expires"/></th>
<td colspan=3>
<input type="text" class="form-control" id="expires" name="expires" title="" value="" required="30" />
</td>
</tr>
<tr>
<td colspan=4>
<input class="button" id="status" type="hidden" name="status" value="1"/>

View File

@@ -69,6 +69,12 @@ $(function(){
</td>
</tr>
<tr>
<th style="width:15%;"><@locale code="apps.cas.expires"/></th>
<td colspan=3>
<input type="text" class="form-control" id="expires" name="expires" title="" value="${model.expires}" required="30" />
</td>
</tr>
<tr>
<td colspan=4>
<input class="button btn btn-primary mr-3" id="submitBtn" type="submit" value="<@locale code="button.text.save" />"/>

View File

@@ -60,7 +60,7 @@
</li>
<li>
<a class="side-nav-menu has-arrow" href="#">
<@locale code="navs.conf"/>
<@locale code="navs.role.permissions"/>
<span class="fa fa-fw fa-cogs fa-lg"></span>
</a>
<ul>
@@ -89,12 +89,26 @@
<span class="fa fa-fw fa-check-square"></span>
</a>
</li>
</ul>
</li>
<li>
<a class="side-nav-menu has-arrow" href="#">
<@locale code="navs.conf"/>
<span class="fa fa-fw fa-cogs fa-lg"></span>
</a>
<ul>
<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"/>
<span class="fa fa-fw fa-chain"></span>
</a>
</li>
<li>
<a class="side-nav-menu" href="<@base />/apps/adapters/list/">
<@locale code="navs.adapters"/>

View File

@@ -0,0 +1,179 @@
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<#include "../layout/header.ftl"/>
<#include "../layout/common.cssjs.ftl"/>
<style type="text/css">
.table th, .table td {
padding: .2rem;
vertical-align: middle;
}
</style>
</head>
<body>
<form id="actionForm" method="post" type="label" autoclose="true" action="<@base/>/synchronizers/update" class="needs-validation" novalidate>
<table border="0" cellpadding="0" cellspacing="0" class="table table-bordered">
<tbody>
<tr style="display:none">
<th><@locale code="synchronizers.id" /></th>
<td nowrap>
<input id="id" type="text" readonly name="id" class="form-control" value="${model.id}"/>
</td>
</tr>
<tr>
<th><@locale code="synchronizers.name" /></th>
<td nowrap>
<input type="text" id="name" name="name" class="form-control" title="" value="${model.name}" required="" />
</td>
</tr>
<tr style="display:none">
<th><@locale code="synchronizers.sourceType" /></th>
<td nowrap>
<input type="text" id="sourceType" name="sourceType" class="form-control" title="" value="${model.sourceType}" required="" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.scheduler" /></th>
<td nowrap>
<input type="text" id="scheduler" name="scheduler" class="form-control" title="" value="${model.scheduler!}" />
</td>
</tr>
<#if "DINGDING"==model.sourceType || "WORKWEIXIN"==model.sourceType>
<tr>
<th><@locale code="synchronizers.principal" /></th>
<td nowrap>
<input type="text" id="principal" name="principal" class="form-control" title="" value="${model.principal!}" required="" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.credentials" /></th>
<td nowrap>
<input type="text" id="credentials" name="credentials" class="form-control" title="" value="${model.credentials!}" required="" />
</td>
</tr>
</#if>
<#if "JDBC"==model.sourceType>
<tr>
<th><@locale code="synchronizers.providerUrl" /></th>
<td nowrap>
<input type="text" id="providerUrl" name="scheduler" class="form-control" title="" value="${model.providerUrl!}" required="" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.driverClass" /></th>
<td nowrap>
<input type="text" id="driverClass" name="driverClass" class="form-control" title="" value="${model.driverClass!}" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.principal" /></th>
<td nowrap>
<input type="text" id="principal" name="principal" class="form-control" title="" value="${model.principal!}" required="" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.credentials" /></th>
<td nowrap>
<input type="text" id="credentials" name="credentials" class="form-control" title="" value="${model.credentials!}" required="" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.filters" /></th>
<td nowrap>
<textarea id="filters" name="filters" class="form-control" rows="3" cols="20">${model.filters!}</textarea>
</td>
</tr>
</#if>
<#if "LDAP"==model.sourceType || "MSAD"==model.sourceType>
<tr>
<th><@locale code="synchronizers.providerUrl" /></th>
<td nowrap>
<input type="text" id="providerUrl" name="providerUrl" class="form-control" title="" value="${model.providerUrl!}" required="" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.principal" /></th>
<td nowrap>
<input type="text" id="principal" name="principal" class="form-control" title="" value="${model.principal!}" required="" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.credentials" /></th>
<td nowrap>
<input type="text" id="credentials" name="credentials" class="form-control" title="" value="${model.credentials!}" required="" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.basedn" /></th>
<td nowrap>
<input type="text" id="basedn" name="basedn" class="form-control" title="" value="${model.basedn!}" required="" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.msadDomain" /></th>
<td nowrap>
<input type="text" id="msadDomain" name="msadDomain" class="form-control" title="" value="${model.msadDomain!}" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.ssl" /></th>
<td nowrap>
<input type="text" id="ssl" name="ssl" class="form-control" title="" value="${model.ssl!}" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.trustStore" /></th>
<td nowrap>
<input type="text" id="trustStore" name="trustStore" class="form-control" title="" value="${model.trustStore!}" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.trustStorePassword" /></th>
<td nowrap>
<input type="text" id="trustStorePassword" name="trustStorePassword" class="form-control" title="" value="${model.trustStorePassword!}" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.filters" /></th>
<td nowrap>
<textarea id="filters" name="filters" class="form-control" rows="2" cols="20">${model.filters!}</textarea>
</td>
</tr>
</#if>
<tr>
<th><@locale code="synchronizers.resumeTime" /></th>
<td nowrap>
<input type="text" id="resumeTime" name="resumeTime" class="form-control timepicker" title="" value="${model.resumeTime!}" />
</td>
</tr>
<tr>
<th><@locale code="synchronizers.suspendTime" /></th>
<td nowrap>
<input type="text" id="suspendTime" name="suspendTime" class="form-control timepicker" title="" value="${model.suspendTime!}" />
</td>
</tr>
<tr>
<th><@locale code="common.text.description" /></th>
<td nowrap>
<textarea id="description" name="description" class="form-control" rows="4" cols="20">${model.description!}</textarea>
</td>
</tr>
<tr>
<td nowrap colspan="2" class="center">
<input id="_method" type="hidden" name="_method" value="post"/>
<input id="status" type="hidden" name="status" value="1"/>
<input class="button btn btn-primary mr-3" id="submitBtn" type="submit" value="<@locale code="button.text.save" />">
<input class="button btn btn-secondary mr-3" id="closeBtn" type="button" value="<@locale code="button.text.cancel" />">
</td>
</tr>
</tbody>
</table>
</form>
<div id="orgContent" class="menuContent" style="display:none; position: absolute;">
<ul id="orgsTree" class="ztree" style="margin-top:0; width:180px; height: 300px;"></ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,122 @@
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<#include "../layout/header.ftl"/>
<#include "../layout/common.cssjs.ftl"/>
<script type="text/javascript">
function dynamicFormatter(value, row, index){
return value=='0'? '<@locale code="common.text.no" />':'<@locale code="common.text.yes" />';
};
</script>
</head>
<body>
<div class="app header-default side-nav-dark">
<div class="layout">
<div class="header navbar">
<#include "../layout/top.ftl"/>
</div>
<div class="col-md-3 sidebar-nav side-nav" >
<#include "../layout/sidenav.ftl"/>
</div>
<div class="page-container">
<div class="main-content">
<div class="container-fluid">
<div class="breadcrumb-wrapper row">
<div class="col-12 col-lg-3 col-md-6">
<h4 class="page-title"><@locale code="navs.synchronizers"/></h4>
</div>
<div class="col-12 col-lg-9 col-md-6">
<ol class="breadcrumb float-right">
<li><a href="<@base/>/main"><@locale code="navs.home"/></a></li>
<li class="active">/ <@locale code="navs.synchronizers"/></li>
</ol>
</div>
</div>
</div>
<div class="container-fluid">
<div class="content-wrapper row">
<div class="col-12 grid-margin">
<div class="card">
<div class="card-body">
<table class="table table-bordered">
<tr>
<td width="120px"><@locale code="synchronizers.name"/>:</td>
<td width="375px">
<form id="basic_search_form">
<input class="form-control" type="text" name="name" style ="width:150px;float:left;">
<input class="button btn btn-primary mr-3" id="searchBtn" type="button" size="50" value="<@locale code="button.text.search"/>">
<!--<input class="button btn btn-secondary" id="advancedSearchExpandBtn" type="button" size="50" value="<@locale code="button.text.expandsearch"/>" expandValue="<@locale code="button.text.expandsearch"/>" collapseValue="<@locale code="button.text.collapsesearch"/>">
-->
</form>
</td>
<td colspan="2">
<div id="tool_box_right">
<input class="button btn btn-info mr-3 " id="modifyBtn" type="button" value="<@locale code="button.text.edit"/>"
wurl="<@base/>/synchronizers/forwardUpdate"
wwidth="550"
wheight="600"
target="window">
</div>
</td>
</tr>
</table>
</div>
<div id="advanced_search">
<form id="advanced_search_form">
</form>
</div>
<table data-url="<@base/>/synchronizers/grid"
id="datagrid"
data-toggle="table"
data-classes="table table-bordered table-hover table-striped"
data-click-to-select="true"
data-pagination="true"
data-total-field="records"
data-page-list="[10, 25, 50, 100]"
data-search="false"
data-locale="zh-CN"
data-query-params="dataGridQueryParams"
data-query-params-type="pageSize"
data-side-pagination="server">
<thead>
<tr>
<th data-checkbox="true"></th>
<th data-sortable="true" data-field="id" data-visible="false">Id</th>
<th data-field="name"><@locale code="synchronizers.name"/></th>
<th data-field="description"><@locale code="common.text.description"/></th>
<th data-field="createdBy" data-visible="false"><@locale code="common.text.createdby"/></th>
<th data-field="createdDate" data-visible="false"><@locale code="common.text.createddate"/></th>
<th data-field="modifiedBy" data-visible="false"><@locale code="common.text.modifiedby"/></th>
<th data-field="modifiedDate" data-visible="false"><@locale code="common.text.modifieddate"/></th>
</tr>
</thead>
</table>
</div>
</div>
</div>
<footer class="content-footer">
<#include "../layout/footer.ftl"/>
</footer>
</div>
</div>
</div>
<div id="preloader">
<div class="loader" id="loader-1"></div>
</div>
</body>
</html>

View File

@@ -65,23 +65,39 @@
<td style="width:35%;">
<input class="form-control" type="text" id="employeeNumber" name="employeeNumber" title="" value=""/>
</td>
<td><@locale code="userinfo.userType" /></td>
<td style="width:15%;"><@locale code="userinfo.windowsAccount" /></td>
<td style="width:35%;">
<select name="userType" class="form-control" >
<option value="EMPLOYEE" selected><@locale code="userinfo.userType.employee" /></option>
<option value="CONTRACTOR" selected><@locale code="userinfo.userType.contractor" /></option>
<option value="CUSTOMER" selected><@locale code="userinfo.userType.customer" /></option>
<option value="DEALER" selected><@locale code="userinfo.userType.dealer" /></option>
<option value="SUPPLIER" selected><@locale code="userinfo.userType.supplier" /></option>
<option value="PARTNER" selected><@locale code="userinfo.userType.partner" /></option>
<option value="EXTERNAL" selected><@locale code="userinfo.userType.external" /></option>
<option value="INTERN" selected><@locale code="userinfo.userType.intern" /></option>
<option value="TEMP" selected><@locale code="userinfo.userType.temp" /></option>
</select>
<input class="form-control" type="text" id="windowsAccount" name="windowsAccount" title="" value=""/>
</td>
</tr>
<tr>
<td><@locale code="userinfo.userType" /></td>
<td style="width:35%;">
<select name="userType" class="form-control" >
<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>
<option value="DEALER" ><@locale code="userinfo.userType.dealer" /></option>
<option value="SUPPLIER" ><@locale code="userinfo.userType.supplier" /></option>
<option value="PARTNER" ><@locale code="userinfo.userType.partner" /></option>
<option value="EXTERNAL" ><@locale code="userinfo.userType.external" /></option>
<option value="INTERN" ><@locale code="userinfo.userType.intern" /></option>
<option value="TEMP" ><@locale code="userinfo.userType.temp" /></option>
</select>
</td>
<td><@locale code="userinfo.userstate" /></td>
<td style="width:35%;">
<select name="userState" class="form-control" >
<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>
<option value="INACTIVE" ><@locale code="userinfo.userstate.inactive" /></option>
</select>
</td>
</tr>
<tr>
<td colspan="4">&nbsp;
</td>
@@ -92,8 +108,8 @@
<td>
<input class="form-control" type="text" required="" id="displayName" name="displayName" title="" value=""/>
</td>
<td rowspan="4"><@locale code="userinfo.picture" /></td>
<td rowspan="4">
<td rowspan="3"><@locale code="userinfo.picture" /></td>
<td rowspan="3">
<img id="picture" width="150px" height="150px" src="<@base/>/static/images/uploadimage.jpg" />
<input type="file" id="pictureFile" name="pictureFile" style="display:none" />
</td>
@@ -115,18 +131,11 @@
<td>
<input class="form-control" type="text" id="middleName" name="middleName" title="" value=""/>
</td>
</tr>
<tr>
<td><@locale code="userinfo.nickName" /></td>
<td>
<input class="form-control" type="text" id="nickName" name="nickName" title="" value=""/>
</td>
<td style="width:15%;"><@locale code="userinfo.windowsAccount" /></td>
<td style="width:35%;">
<input class="form-control" type="text" id="windowsAccount" name="windowsAccount" title="" value=""/>
</td>
</tr>
<tr>
<td><@locale code="userinfo.gender" /></td>

View File

@@ -54,20 +54,15 @@
<td style="width:35%;">
<select name="status" id="status" class="form-control" >
<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.withdrawn" /></option>
<option value="3" <#if 3==model.status>selected</#if>><@locale code="userinfo.status.inactive" /></option>
<option value="4" <#if 4==model.status>selected</#if>><@locale code="userinfo.status.retiree" /></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>
<option value="9" <#if 9==model.status>selected</#if>><@locale code="userinfo.status.delete" /></option>
</select>
</td>
</tr>
<tr>
<td style="width:15%;"><@locale code="userinfo.employeeNumber" /></td>
<td style="width:15%;"><@locale code="userinfo.userType" /></td>
<td style="width:35%;">
<input class="form-control" type="text" id="employeeNumber" name="employeeNumber" title="" value="${model.employeeNumber!""!""}"/>
</td>
<td><@locale code="userinfo.userType" /></td>
<td style="width:35%;">
<select name="userType" class="form-control" >
<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>
@@ -80,8 +75,28 @@
<option value="TEMP" <#if 'TEMP'==model.userType>selected</#if>><@locale code="userinfo.userType.temp" /></option>
</select>
</td>
<td><@locale code="userinfo.userstate" /></td>
<td style="width:35%;">
<select name="userState" class="form-control" >
<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>
<option value="INACTIVE" <#if 'INACTIVE'==model.userState>selected</#if>><@locale code="userinfo.userstate.inactive" /></option>
</select>
</td>
</tr>
</tr>
<tr>
<td style="width:15%;"><@locale code="userinfo.employeeNumber" /></td>
<td style="width:35%;">
<input class="form-control" type="text" id="employeeNumber" name="employeeNumber" title="" value="${model.employeeNumber!""!""}"/>
</td>
<td><@locale code="userinfo.windowsAccount" /></td>
<td style="width:35%;">
<input class="form-control" type="text" id="windowsAccount" name="windowsAccount" title="" value="${model.windowsAccount!""}"/>
</td>
</tr>
<tr>
<td colspan="4">&nbsp;
</td>
@@ -92,8 +107,8 @@
<td>
<input class="form-control" type="text" id="displayName" name="displayName" title="" value="${model.displayName!""}"/>
</td>
<td rowspan="4"><@locale code="userinfo.picture" /></td>
<td rowspan="4">
<td rowspan="3"><@locale code="userinfo.picture" /></td>
<td rowspan="3">
<img id="picture" width="150px" height="150px" src="<@base/>/static/images/uploadimage.jpg" />
<input type="file" id="pictureFile" name="pictureFile" style="display:none" />
</td>
@@ -115,18 +130,11 @@
<td>
<input class="form-control" type="text" id="middleName" name="middleName" title="" value="${model.middleName!""}"/>
</td>
</tr>
<tr>
<td><@locale code="userinfo.nickName" /></td>
<td>
<input class="form-control" type="text" id="nickName" name="nickName" title="" value="${model.nickName!""}"/>
</td>
<td style="width:15%;"><@locale code="userinfo.windowsAccount" /></td>
<td style="width:35%;">
<input class="form-control" type="text" id="windowsAccount" name="windowsAccount" title="" value="${model.windowsAccount!""}"/>
</td>
</tr>
<tr>
<td><@locale code="userinfo.gender" /></td>

View File

@@ -11,6 +11,21 @@
return '<@locale code="userinfo.gender.male" />';
}
};
function statusFormatter(value, row, index){
if(value==1){
return '<@locale code="userinfo.status.active" />';
}else if(value==2){
return '<@locale code="userinfo.status.inactive" />';
}else if(value==5){
return '<@locale code="userinfo.status.lock" />';
}else if(value==9){
return '<@locale code="userinfo.status.delete" />';
}else {
return '<@locale code="userinfo.status.inactive" />';
}
};
function onClick (event, treeId, treeNode) {
$("#departmentId").val(treeNode.data.id)
@@ -222,13 +237,13 @@ $(function () {
<input class="button btn btn-success mr-3" id="addBtn" type="button" value="<@locale code="button.text.add"/>"
wurl="<@base/>/userinfo/forwardAdd"
wwidth="960"
wheight="600"
wheight="620"
target="window">
<input class="button btn btn-info mr-3 " id="modifyBtn" type="button" value="<@locale code="button.text.edit"/>"
wurl="<@base/>/userinfo/forwardUpdate"
wwidth="960"
wheight="600"
wheight="620"
target="window">
<input class="button btn btn-danger mr-3 " id="deleteBtn" type="button" value="<@locale code="button.text.delete"/>"
wurl="<@base/>/userinfo/delete" />
@@ -305,6 +320,7 @@ $(function () {
<th data-field="mobile" data-visible="false"><@locale code="userinfo.mobile"/></th>
<th data-field="email" data-visible="false"><@locale code="userinfo.email"/></th>
<th data-field="gender" data-formatter="genderFormatter" ><@locale code="userinfo.gender"/></th>
<th data-field="status" data-formatter="statusFormatter" ><@locale code="userinfo.status"/></th>
</tr>
</thead>
</table>