From c5ce099b314be4b296137415a146c610095ae92e Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 금, 11 3월 2022 13:54:09 +0900 Subject: [PATCH] - api로 이슈 추가 시 하위이슈기준이 2개 일 경우 코드 수정 - 업체 추가/수정 시 ip대역대 중복 체크 - 이슈 추가/수정 시 ip대역대 수정불가 --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 10 +++ src/main/java/kr/wisestone/owl/util/ConvertUtil.java | 15 ++++- src/main/webapp/views/issue/issueAddDown.html | 8 +- src/main/java/kr/wisestone/owl/mapper/CompanyFieldMapper.java | 3 + src/main/webapp/views/issue/issueAdd.html | 8 +- src/main/resources/mybatis/query-template/companyField-template.xml | 35 +++++++++++ src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java | 61 ++++++++++++++------ src/main/webapp/views/issue/issueAddRelation.html | 8 +- src/main/webapp/views/issue/issueModify.html | 8 +- src/main/java/kr/wisestone/owl/constant/MsgConstants.java | 1 src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties | 1 src/main/webapp/assets/styles/main.css | 15 ++-- 12 files changed, 128 insertions(+), 45 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java index 9e00613..73db78c 100644 --- a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java +++ b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java @@ -290,6 +290,7 @@ public static final String EMAIL_NOT_INVALID = "EMAIL_NOT_INVALID"; // �씠硫붿씪 �삎�떇�씠 留욎� �븡�뒿�땲�떎. public static final String IP_NOT_INVALID = "IP_NOT_INVALID"; // IP二쇱냼 �삎�떇�씠 留욎� �븡�뒿�땲�떎. public static final String IP_START_NOT_LARGER_THAN_END = "IP_START_NOT_LARGER_THAN_END"; // �떆�옉 IP媛� �걹 IP 蹂대떎 �겢 �닔 �뾾�뒿�땲�떎. + public static final String COMPANY_EXIST_IP = "COMPANY_EXIST_IP"; // �빐�떦 ip ���뿭���뒗 �씠誘� 議댁옱�빀�땲�떎. public static final String PROJECT_NOT_INCLUDE_DEPARTMENT = "PROJECT_NOT_INCLUDE_DEPARTMENT"; // �꽑�깮�븳 遺��꽌 以� �봽濡쒖젥�듃�뿉 李몄뿬�븯怨� �엳吏� �븡�� 遺��꽌媛� �엳�뒿�땲�떎. public static final String PROJECT_DEPARTMENT_NOT_EQUAL_WORKFLOW = "PROJECT_DEPARTMENT_NOT_EQUAL_WORKFLOW"; // �빐�떦 �봽濡쒖젥�듃�뿉 �냽�빐�엳�뒗 �썙�겕�뵆濡쒖슦�쓽 �떞�떦遺��꽌�뒗 �봽濡쒖젥�듃�쓽 �떞�떦遺��꽌�뿉�꽌 �젣�쇅�떆�궗 �닔 �뾾�뒿�땲�떎. diff --git a/src/main/java/kr/wisestone/owl/mapper/CompanyFieldMapper.java b/src/main/java/kr/wisestone/owl/mapper/CompanyFieldMapper.java index 4632105..63d8ab2 100644 --- a/src/main/java/kr/wisestone/owl/mapper/CompanyFieldMapper.java +++ b/src/main/java/kr/wisestone/owl/mapper/CompanyFieldMapper.java @@ -24,4 +24,7 @@ List<CompanyField> findByUrlsAndIdNot(CompanyFieldCondition companyFieldCondition); + List<CompanyField> findByIps(CompanyFieldCondition companyFieldCondition); + + List<CompanyField> findByIpsAndIdNot(CompanyFieldCondition companyFieldCondition); } diff --git a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java index 9b50065..a261137 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java @@ -86,7 +86,7 @@ if (companyFieldForm.getIpStart() != null && companyFieldForm.getIpEnd() != null) { // �븘�씠�뵾 �쑀�슚�꽦 泥댄겕 - this.verifyIp(companyFieldForm.getIpStart(), companyFieldForm.getIpEnd()); + this.verifyIp(companyFieldForm.getIpStart(), companyFieldForm.getIpEnd(), null); } if (companyFieldForm.getUrl() != null) { @@ -119,21 +119,41 @@ * IP �쑀�슚�꽦 泥댄겕 * @param ip String */ - private void verifyIp(String ip, String ip2) { - if (ip2 == null) { - if (!StringUtils.isEmpty(ip)) { - if (!Pattern.matches("^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\" + - ".(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$", ip)) { - throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.IP_NOT_INVALID)); - } + private void verifyIp(String ip, String ip2, Long id) { + if (!StringUtils.isEmpty(ip)) { + if (!Pattern.matches("^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\" + + ".(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$", ip)) { + throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.IP_NOT_INVALID)); } - } else { - if (!StringUtils.isEmpty(ip)) { - long ipStart = ConvertUtil.ipToLong(ip); - long ipEnd = ConvertUtil.ipToLong(ip2); - if (ipEnd < ipStart) { - throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.IP_START_NOT_LARGER_THAN_END)); - } + } + if (!StringUtils.isEmpty(ip2)) { + if (!Pattern.matches("^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\" + + ".(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$", ip2)) { + throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.IP_NOT_INVALID)); + } + } + + if (!StringUtils.isEmpty(ip) && !StringUtils.isEmpty(ip2)) { + long ipStart = ConvertUtil.ipToLong(ip); + long ipEnd = ConvertUtil.ipToLong(ip2); + if (ipEnd < ipStart) { + throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.IP_START_NOT_LARGER_THAN_END)); + } + + List<CompanyField> companyFields = Lists.newArrayList(); + CompanyFieldCondition condition = new CompanyFieldCondition(); + condition.setIpStart(String.valueOf(ipStart)); + condition.setIpEnd(String.valueOf(ipEnd)); + if (id != null) { + condition.setId(id); + companyFields = this.companyFieldMapper.findByIpsAndIdNot(condition); + } else { + companyFields = this.companyFieldMapper.findByIps(condition); + } + + // IP���뿭�� 以묐났 泥댄겕 + if (companyFields != null && companyFields.size() > 0) { + throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.COMPANY_EXIST_IP)); } } } @@ -276,6 +296,11 @@ public void modifyCompany(CompanyFieldForm companyFieldForm) { // �뾽泥대챸 �쑀�슚�꽦 泥댄겕 this.verifyTitle(companyFieldForm.getName(), companyFieldForm.getId()); + + if (companyFieldForm.getIpStart() != null && companyFieldForm.getIpEnd() != null) { + // �븘�씠�뵾 �쑀�슚�꽦 泥댄겕 + this.verifyIp(companyFieldForm.getIpStart(), companyFieldForm.getIpEnd(), companyFieldForm.getId()); + } if (companyFieldForm.getUrl() != null) { // url �쑀�슚�꽦 泥댄겕 @@ -472,7 +497,7 @@ // �뾽泥대줈 �벑濡앺븯湲� �쐞�빐 CompanyFieldForm �뿉 �뜲�씠�꽣瑜� �뀑�똿�븳�떎. CompanyFieldForm newCompanyFieldForm = this.setCompanyFieldFormToExcelField(row, (rowIndex + 1), ispFieldMaps, hostingFieldMaps, companyTypeMaps, parentSectorMaps, childSectorMaps, regionMaps, statusMaps, headers); // ip �쑀�슚�꽦 泥댄겕 - this.verifyIp(newCompanyFieldForm.getIpStart(), newCompanyFieldForm.getIpEnd()); + this.verifyIp(newCompanyFieldForm.getIpStart(), newCompanyFieldForm.getIpEnd(), null); companyFieldForms.add(newCompanyFieldForm); } @@ -651,7 +676,7 @@ if (ipEnd.contains(" ")) { ipEnd = ipEnd.replace(" ", ""); } - this.verifyIp(ipEnd, null); //ip �쑀�슚�꽦 寃��궗 + this.verifyIp(ipEnd, null, null); //ip �쑀�슚�꽦 寃��궗 companyFieldForm.setIpEnd(ipEnd); } @@ -662,7 +687,7 @@ if (ipStart.contains(" ")) { ipStart = ipStart.replace(" ", ""); } - this.verifyIp(ipStart, null); //ip �쑀�슚�꽦 寃��궗 + this.verifyIp(ipStart, null, null); //ip �쑀�슚�꽦 寃��궗 companyFieldForm.setIpStart(ipStart); } diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java index 11bdddd..6cd7ff7 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -566,7 +566,15 @@ // issueCustomFieldValueCondition.setIssueStatusType("CLOSE"); List<Map<String, Object>> results = Lists.newArrayList(); if (customFieldType.equals(IP_ADDRESS.toString()) && issueForm.getIssueCompanyFields() != null && issueForm.getIssueCompanyFields().size() > 0) { - long ipValue = ConvertUtil.ipToLong(concatUseValue); + long ipValue = 0; + if (concatUseValue.contains(",")) { + String[] arr = concatUseValue.split(","); + for (String str : arr) { + ipValue = ConvertUtil.ipToLong(str); + } + } else { + ipValue = ConvertUtil.ipToLong(concatUseValue); + } issueCustomFieldValueCondition.setUseValue(String.valueOf(ipValue)); // �븯�쐞�씠�뒋議곌굔�쓽 ���엯�씠 IP�씪 寃쎌슦 媛숈� �뾽泥댁젙蹂댁씤 �씠�뒋 李얘린 results = this.issueMapper.findByCustomFieldValueOfIp(issueCustomFieldValueCondition); diff --git a/src/main/java/kr/wisestone/owl/util/ConvertUtil.java b/src/main/java/kr/wisestone/owl/util/ConvertUtil.java index 4ad54b3..bf303f0 100644 --- a/src/main/java/kr/wisestone/owl/util/ConvertUtil.java +++ b/src/main/java/kr/wisestone/owl/util/ConvertUtil.java @@ -8,6 +8,7 @@ import kr.wisestone.owl.vo.CompanyFieldVo; import kr.wisestone.owl.vo.IspFieldVo; import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; @@ -17,6 +18,7 @@ import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.util.*; +import java.util.regex.Pattern; public class ConvertUtil { static final Logger LOGGER = LoggerFactory.getLogger(ConvertUtil.class); @@ -565,11 +567,18 @@ */ public static long ipToLong(String ipAddress) { long result = 0; - String[] ipAddressArr = ipAddress.split("\\."); + String reg = "^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\" + + ".(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"; + if (!StringUtils.isEmpty(ipAddress) && !Pattern.matches(reg, ipAddress)) { + return result; + } else { + String[] ipAddressArr = ipAddress.split("\\."); - for (int i=0; i<ipAddressArr.length; i++) { - result += Integer.parseInt(ipAddressArr[i]) * Math.pow(256, 3-i); + for (int i=0; i<ipAddressArr.length; i++) { + result += Integer.parseInt(ipAddressArr[i]) * Math.pow(256, 3-i); + } } + return result; } diff --git a/src/main/resources/mybatis/query-template/companyField-template.xml b/src/main/resources/mybatis/query-template/companyField-template.xml index 4973732..d7ce60a 100644 --- a/src/main/resources/mybatis/query-template/companyField-template.xml +++ b/src/main/resources/mybatis/query-template/companyField-template.xml @@ -107,4 +107,39 @@ AND cf.id not like CONCAT('%',#{id},'%') </if> </select> + + <select id="findByIps" resultType="kr.wisestone.owl.domain.CompanyField" parameterType="kr.wisestone.owl.web.condition.CompanyFieldCondition"> + SELECT + cf.id as id, + cf.name as name, + cf.email as email, + cf.url as url + FROM + company_field cf + WHERE 1=1 + <choose> + <when test="ipStart != null and ipStart != '' and ipEnd != null and ipEnd != ''"> + AND INET_ATON(cf.ip_start) BETWEEN #{ipStart} AND #{ipEnd} OR INET_ATON(cf.ip_end) BETWEEN #{ipStart} AND #{ipEnd} + </when> + </choose> + </select> + + <select id="findByIpsAndIdNot" resultType="kr.wisestone.owl.domain.CompanyField" parameterType="kr.wisestone.owl.web.condition.CompanyFieldCondition"> + SELECT + cf.id as id, + cf.name as name, + cf.email as email, + cf.url as url + FROM + company_field cf + WHERE 1=1 + <choose> + <when test="ipStart != null and ipStart != '' and ipEnd != null and ipEnd != ''"> + AND (INET_ATON(cf.ip_start) BETWEEN #{ipStart} AND #{ipEnd} OR INET_ATON(cf.ip_end) BETWEEN #{ipStart} AND #{ipEnd}) + </when> + </choose> + <if test="id != '' and id != null"> + AND cf.id not like CONCAT('%',#{id},'%') + </if> + </select> </mapper> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties index c55a9da..e1e3ff9 100644 --- a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties +++ b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties @@ -272,3 +272,4 @@ EMAIL_NOT_INVALID=\uC774\uBA54\uC77C \uD615\uC2DD\uC774 \uB9DE\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. IP_NOT_INVALID=IP\uC8FC\uC18C \uD615\uC2DD\uC774 \uB9DE\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. IP_START_NOT_LARGER_THAN_END=\uC2DC\uC791 IP\uAC00 \uB05D IP \uBCF4\uB2E4 \uD074 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +COMPANY_EXIST_IP=\uD574\uB2F9 ip \uB300\uC5ED\uB300\uB294 \uC774\uBBF8 \uC874\uC7AC\uD569\uB2C8\uB2E4. diff --git a/src/main/webapp/assets/styles/main.css b/src/main/webapp/assets/styles/main.css index 5158252..d877d3c 100644 --- a/src/main/webapp/assets/styles/main.css +++ b/src/main/webapp/assets/styles/main.css @@ -1484,13 +1484,6 @@ max-width: 25%; } - .col-lg-3-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 32.4%; - max-width: 32.4%; - } - .col-lg-4 { -webkit-box-flex: 0; -ms-flex: 0 0 33.3333333333%; @@ -7778,6 +7771,10 @@ .ml-5, .mx-5 { margin-left: 3rem !important; +} + +.ml--4 { + margin-left: -4px !important; } .ml--12 { @@ -28596,6 +28593,10 @@ margin-top: -14px; !important; } +.mr--4 { + margin-right: -4px !important; +} + .ml-10 { margin-left: 10px !important; } diff --git a/src/main/webapp/views/issue/issueAdd.html b/src/main/webapp/views/issue/issueAdd.html index bdc533e..fcd17cc 100644 --- a/src/main/webapp/views/issue/issueAdd.html +++ b/src/main/webapp/views/issue/issueAdd.html @@ -484,7 +484,7 @@ </div>--> </div> </div> - <div class="col-lg-3-2"> + <div class="col-lg-4"> <div class="form-group mgb5"> <label for="companyFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label> <input id="companyFieldUrlAddForm" @@ -510,16 +510,16 @@ class="form-control" kr-input ng-pattern="/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/" - placeholder="IP 二쇱냼 �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." autocomplete="off" ng-model="vm.ipStart" + disabled > <div ng-if="issueAddForm.ipStart.$error.pattern" class="help-block form-text text-danger" translate="common.invalidipAdressFormat">IP二쇱냼 �삎�떇�씠 留욎� �븡�뒿�땲�떎. </div> </div> </div> - <div class="mt-30"> + <div class="mt-30 ml--4 mr--4"> <label class="issue-label">~</label> </div> <div class="col-lg-2 mt-1"> @@ -531,9 +531,9 @@ class="form-control" kr-input ng-pattern="/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/" - placeholder="IP 二쇱냼 �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." autocomplete="off" ng-model="vm.ipEnd" + disabled > <div ng-if="issueAddForm.ipEnd.$error.pattern" class="help-block form-text text-danger" translate="common.invalidipAdressFormat">IP二쇱냼 �삎�떇�씠 留욎� �븡�뒿�땲�떎. diff --git a/src/main/webapp/views/issue/issueAddDown.html b/src/main/webapp/views/issue/issueAddDown.html index 9b41029..eb54a87 100644 --- a/src/main/webapp/views/issue/issueAddDown.html +++ b/src/main/webapp/views/issue/issueAddDown.html @@ -450,7 +450,7 @@ </div>--> </div> </div> - <div class="col-lg-3-2"> + <div class="col-lg-4"> <div class="form-group mgb5"> <label for="companyFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label> <input id="companyFieldUrlAddForm" @@ -476,16 +476,16 @@ class="form-control" kr-input ng-pattern="/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/" - placeholder="IP 二쇱냼 �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." autocomplete="off" ng-model="vm.ipStart" + disabled > <div ng-if="issueAddDownForm.ipStart.$error.pattern" class="help-block form-text text-danger" translate="common.invalidipAdressFormat">IP二쇱냼 �삎�떇�씠 留욎� �븡�뒿�땲�떎. </div> </div> </div> - <div class="mt-30"> + <div class="mt-30 ml--4 mr--4"> <label class="issue-label">~</label> </div> <div class="col-lg-2 mt-1"> @@ -497,9 +497,9 @@ class="form-control" kr-input ng-pattern="/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/" - placeholder="IP 二쇱냼 �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." autocomplete="off" ng-model="vm.ipEnd" + disabled > <div ng-if="issueAddDownForm.ipEnd.$error.pattern" class="help-block form-text text-danger" translate="common.invalidipAdressFormat">IP二쇱냼 �삎�떇�씠 留욎� �븡�뒿�땲�떎. diff --git a/src/main/webapp/views/issue/issueAddRelation.html b/src/main/webapp/views/issue/issueAddRelation.html index 5bf1a34..4796601 100644 --- a/src/main/webapp/views/issue/issueAddRelation.html +++ b/src/main/webapp/views/issue/issueAddRelation.html @@ -453,7 +453,7 @@ </div>--> </div> </div> - <div class="col-lg-3-2"> + <div class="col-lg-4"> <div class="form-group mgb5"> <label for="companyFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label> <input id="companyFieldUrlAddForm" @@ -479,16 +479,16 @@ class="form-control" kr-input ng-pattern="/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/" - placeholder="IP 二쇱냼 �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." autocomplete="off" ng-model="vm.ipStart" + disabled > <div ng-if="issueAddRelationForm.ipStart.$error.pattern" class="help-block form-text text-danger" translate="common.invalidipAdressFormat">IP二쇱냼 �삎�떇�씠 留욎� �븡�뒿�땲�떎. </div> </div> </div> - <div class="mt-30"> + <div class="mt-30 ml--4 mr--4"> <label class="issue-label">~</label> </div> <div class="col-lg-2 mt-1"> @@ -500,9 +500,9 @@ class="form-control" kr-input ng-pattern="/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/" - placeholder="IP 二쇱냼 �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." autocomplete="off" ng-model="vm.ipEnd" + disabled > <div ng-if="issueAddRelationForm.ipEnd.$error.pattern" class="help-block form-text text-danger" translate="common.invalidipAdressFormat">IP二쇱냼 �삎�떇�씠 留욎� �븡�뒿�땲�떎. diff --git a/src/main/webapp/views/issue/issueModify.html b/src/main/webapp/views/issue/issueModify.html index 50cf7d7..815c011 100644 --- a/src/main/webapp/views/issue/issueModify.html +++ b/src/main/webapp/views/issue/issueModify.html @@ -482,7 +482,7 @@ </div>--> </div> </div> - <div class="col-lg-3-2"> + <div class="col-lg-4"> <div class="form-group mgb5"> <label for="companyFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label> <input id="companyFieldUrlAddForm" @@ -508,16 +508,16 @@ class="form-control" kr-input ng-pattern="/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/" - placeholder="IP 二쇱냼 �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." autocomplete="off" ng-model="vm.ipStart" + disabled > <div ng-if="issueModifyForm.ipStart.$error.pattern" class="help-block form-text text-danger" translate="common.invalidipAdressFormat">IP二쇱냼 �삎�떇�씠 留욎� �븡�뒿�땲�떎. </div> </div> </div> - <div class="mt-30"> + <div class="mt-30 ml--4 mr--4"> <label class="issue-label">~</label> </div> <div class="col-lg-2 mt-1"> @@ -529,9 +529,9 @@ class="form-control" kr-input ng-pattern="/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/" - placeholder="IP 二쇱냼 �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." autocomplete="off" ng-model="vm.ipEnd" + disabled > <div ng-if="issueModifyForm.ipEnd.$error.pattern" class="help-block form-text text-danger" translate="common.invalidipAdressFormat">IP二쇱냼 �삎�떇�씠 留욎� �븡�뒿�땲�떎. -- Gitblit v1.8.0