2014. 9. 4. 14:38

전자정부 프레임워크 window.showModalDialog chrome 문제

역시 정부다...

대단한 akfjkajfljaslfjlsafj들이다...

어떤 분이 window.showModalDialog 에 대해서 크롬에서 안된다고 했는데 답변이 저ZR이다.


아래는 질문

=======================================================================================

안녕하세요.

아랫쪽에 글을 보니 window.쇼모달(영문) 과 관련한 답변을 보았습니다.

(크롬 지원 안함)


다음 컴포넌트 배포시 수정하여 배포하시겠다고 하셨는데요.

다음 컴포넌트 배포하기 전까지 우선 우회적으로 어떻게 해서 쓰라고 가이드를 하셔야 하는거 아닌가요?


다음 배포가 언제가 될지도 모르는거고 그때까지 이부분을 해결 못하는 사람들은 기다리고만 있어야 하는건가요?

무책임한 발언이라고 생각하지 않으십니까?

=======================================================================================

아래는 ZR답변

=======================================================================================

우선 사용에 불편을 드린 점 사과드립니다.


다만, 해당 부분은 현재 특정 브라우저 상의 문제로 저희가 책임져야할  내용은 아님을 이해하여 주십시오.

(공통컴포넌트 부분에 대해서는 전자정부 웹 표준 점근성에 따라 3종 이상 웹브라우저에서 정상 동작해야 하며, 

현재 IE, firefox, safari 등에서는 문제 없음) 


조치 방법은 금주 중으로 FAQ로 정리하여 올릴 예정이며,


실제 수정된 소스는 9월말 현재 진행 중인 보안점검 조치 부분과 함께 배포될 예정입니다.


불편하시더라고 인터넷 등을 통해 조치 방법을 참조하셔서 활용해 주십시오.


그럼, 즐거운 하루되십시오.

감사합니다.

=======================================================================================

볼드 처리한 부분 아주 이해 할 수 없음...

자기네들끼리의 사고방식임



이리하여 우선 수정을 했다.

내가 수정한 부분은 아주 문제가 많다.(예를들어 팝업에서 달력이라던지 아무튼 이래 저래 문제가 많다. 정답은 결코 아니며 우선 이 상황에 대해 도망(?)가는 상황에서 코딩을 한것이기에 똥줄 타거나 이렇게 해도 무방한 싸이트라면 우선 아래 처럼 바꾸기 바란다.

(내가 아래와 같이 바꾼 이유는 기존 소스에 영향이 없는 한도내에서 코딩을 하려다 보니 저리 되었다.)


1-1. EgovCalPopup.js

retVal = window.showModalDialog(url, varParam, openParam);

이 부분을 아래와 같이 수정한다.

retVal = window.open(url,"popwindow", "width=275, height=192, menubar=no,status=no,scrollbars=no,center=yes");

(옵션은 알아서 주기 바란다.)


1-2. 전역변수와 펑션 추가

같은 파일안에 아래 추가

var ssDate = "";

var vvDate = "";

같은 파일안에 아래 펑션 추가

function normalCalendarController(retVal) {    

if(retVal) {

ssDate.value = retVal.sDate;

vvDate.value = retVal.vDate;

}


2. EgovNormalCalendar.jsp

아래 값 넘겨주는 다른 부분 다 빼고 아래 추가

(parent.opener.parent).top._content.normalCalendarController(retVal);


위와 같이 허접하게 땜빵식으로 하면 된다.

우선 사용하는데는 문제가 없지만 여러가지 상황을 고려하지 않은 코딩이다.

내가 봤을때는 전자정부쪽에서도 해당 소스를 고치기 위해서는 달력을 호출하는 부분에서부터 다 싹다 뜯어 고쳐야 한다.



Trackback 0 Comment 2
  1. 석양의온도 2014.10.07 14:01 address edit & del reply

    감사합니다. 잘 참고하고 갑니다. 저도 비슷한 케이스가 있어서 욱했었네요.

    정부플젝이 있어서 참여했다가, 그쪽 api 신청해서 예제로 진행하려 했더니,
    버그가 있어서(제공 예제 파일 자체가 진행이 안되어.. )
    문제점 확인하여 전화해서 알려주고, 요거만 수정하시면 될거다.. 라고 했더니,
    자기들은 api만 제공하지, 그런 이야기 하는건 니가 처음이다.. 남들은 알아서 수정해서 쓰더라 라면서 비웃더군요.
    상황이 우습더군요, api나 준공식 가이드의 경우 파편화 방지를 위해서, 모두 좋자고 하는거 아닙니까. 근데 그 일 맡은 애들 사고방식이 글러먹었드라구요.

  2. 자바초보 2014.10.17 13:21 address edit & del reply

    감사합니다.
    저도 showModalDialog를 사용하니 크롬에서 팝업창이 뜨지않어 몇일 동안 삽질만하고있었는데 참고해서 갑니다^^

2014. 8. 28. 11:37

전자정부 프레임 워크 네이버 스마트 에디터 적용

이번 플젝에서 전자정부 프레임워크를 도입을 했다.

이유는 현재 회사가 java 에 대한 레퍼런스가 없다.

이번에 전자정부 프레임워크를 사용하게 되면서 느낀점은 상용 서비스에서 그대로 사용하기에는 많은 문제점이 있다.

 

아무튼 전자정부 프레임워크는 HtmlArea3.0 이라는 에디터를 쓴다.

나는 사용하는데 아무런 불편함을 느끼지 못한다.

근데 고객은 바꾸어 달라고 한다;;;

 

그래서 이번에 전자정부 프레임워크에 nse를 추가 하면서 했던 짓거리를 쓸려고 한다.

우선 네이버 스마트 에디터를 다운로드 받자.(http://dev.naver.com/projects/smarteditor)

나는 해당 내용을 webapp 밑에 위치 시켰다(webapp/nse/**)

 

HtmlArea3.0 에서 nse로 바꾸는데 다른점에 문제점은 없으나 사진 업로드 부분을 nse것을 쓸수가 없다.

그래서 기존 전자정부 프레임워크의 사진 업로드 화면을 이용을 했다.

 

우선 네이버 에디터를 사용하려고 하는 화면에 다음을 추가한다.

일반적으로 nse를 적용하는 것과 같다.

<script src="${pageContext.request.contextPath}/nse/js/HuskyEZCreator.js" charset="utf-8"></script> // nse js 추가

<script type="text/javaScript" language="javascript">
var oEditors = [];

$(document).ready(function(){
 nhn.husky.EZCreator.createInIFrame({
  oAppRef: oEditors,
  elPlaceHolder: "qestnCn",
  sSkinURI: "${pageContext.request.contextPath}/nse/SmartEditor2Skin.html", 
  getContextPath : "${pageContext.request.contextPath}",
  htParams : {
   bUseToolbar : true,    // 툴바 사용 여부 (true:사용/ false:사용하지 않음)
   bUseVerticalResizer : true,  // 입력창 크기 조절바 사용 여부 (true:사용/ false:사용하지 않음)
   bUseModeChanger : true,   // 모드 탭(Editor | HTML | TEXT) 사용 여부 (true:사용/ false:사용하지 않음)
   getContextPath : "${pageContext.request.contextPath}",
   fOnBeforeUnload : function(){
   }
  }, //boolean
  fOnAppLoad : function(){
  },
  fCreator: "createSEditor2"
 });
});

</script>

여기에서 틀린점은 위에 볼드 처리된 두 부분을 추가한 것이다.

이유는 아래에서 설명한다.

 

SE2BasicCreator.js 파일에 다음을 변경한다.

oEditor.registerPlugin(new nhn.husky.SE2M_AttachQuickPhoto(elAppContainer,htParams)); // 사진

 

hp_SE2M_AttachQuickPhoto.js 파일에 다음을 변경한다.

makePopupURL : function(){
  
  //var sPopupUrl = "./photo_uploader/popup/photo_uploader.html";
  var sPopupUrl = this.htParams.getContextPath+"/utl/wed/insertImage.do";
  
  return sPopupUrl;
 },

여기에서 중요한 점은 this.htParams.getContextPath 을 추가 하기 위하여 위에 부분이 선행 되었다.

(왜 저렇게 했는지는 개발자라면 알것이라고 생각한다.)

 

같은 파일안에 다음을 추가한다.

/**
  * 팝업에서 호출되는 메세지.
  */
 $ON_SET_PHOTO_NSE : function(aPhotoData){
  
  try{
   var sHTML = '<img src="'+aPhotoData.f_url+'" alt="'+aPhotoData.f_alt;
   if(aPhotoData.f_horiz != ''){          // 이렇게 써도 되고 아래 처럼 써도 되고 알아서...
    sHTML +='" width="'+aPhotoData.f_horiz;
   }
   if(aPhotoData.f_vert){                  // 이렇게 써도 되고 위 처럼 써도 되고 알아서...
    sHTML +='" height="'+aPhotoData.f_vert;
   }
   if(aPhotoData.f_align){
    sHTML +='" align="'+aPhotoData.f_align;
   }
   if(aPhotoData.f_border){
    sHTML +='" border="'+aPhotoData.f_border;
   }
   sHTML +=' " />';

   this.oApp.exec("PASTE_HTML", [sHTML]); // 위즐 첨부 파일 부분 확인
  }catch(e){
   // upload시 error발생에 대해서 skip함
   //alert("ERROR");
   return false;
  }
 },

위의 내용은 $ON_SET_PHOTO 를 참조하여 만들었으며 전자정부 프레임워크 사진 업로드 부분에서 호출용으로 쓰인다.

 

마지막으로 EgovInsertImage.jsp 전자정부 프레임워크에 사진 업로드 하는 jsp 파일에서

215라인 정도에 수정을 한다.

if(String(opener.location).indexOf("SmartEditor2Skin") > -1){
   //opener.parent.pasteImgHTML(param);
   if (!!opener && !!opener.nhn && !!opener.nhn.husky && !!opener.nhn.husky.PopUpManager) {
    opener.nhn.husky.PopUpManager.setCallback(window, 'SET_PHOTO_NSE', [param]);
   }
   window.close();
  }else{

   __dlg_close(param);
   return false;
  }

볼드 처리한 부분을 추가 및 수정 했다.

처음 if 문은 네이버 스마트 에디터 인지 판단하기 위한 부분 두분째 if 문은 스마트 에디터 인지 판단하기 위한 부분 ㅋㅋ 그냥 두개 다 걸었다. 하나만 걸어도 무방하다.

opener.nhn.husky.PopUpManager.setCallback(window, 'SET_PHOTO_NSE', [param]);
이 부분이 $ON_SET_PHOTO_NSE 를 호출한다.

That's ALL.

이걸 하면서 중요한 부분은 contextPath 부분이다.

 

나는 티스토리에 잘 오지 않는다.. 댓글 달아도 잘 안 본다.

욕하지 말지어다!~

적용하는데 문제가 있거나 똥줄이 타거든 byeclub@naver.com 으로 티스토리 댓글좀 봐주세요~

메일 주기 바란다.

모르는 거면 댓글 안달고 알면 단다.

 

'Java > ETC' 카테고리의 다른 글

전자정부 프레임 워크 네이버 스마트 에디터 적용  (1) 2014.08.28
Google Code Jam!!!  (0) 2009.08.14
Trackback 0 Comment 1
  1. 문지예 2015.05.25 20:53 address edit & del reply

    sSkinURI 요부분 경로를 절대경로, 상대경로 다 해봤는데 계속 에러.. ${pageContext.request.contextPath} 이거 추가하니 되네요. 보배롭다 정말..
    정말정말 감사합니다!

2011. 7. 5. 19:55

사랑니 뽑기


흠..
사랑니를 뽑기 위하여 사진만 3번 찍었다.

한곳에서 3장 찍었냐고??
아니다;; 다 다른 치과에서 찍은거다.

이유는 돈도 안되고 위험하기 때문이다.
그리고 완전 옆으로 누운 수평 사랑니;;;
대학병원 가라고 한다;;

요즘 쉬고 있는데
여기 저기 알아본 결과..
짤 뽑아주고 대학병원이 아닌 일반병원에서 뽑아준다는 치과가 있어서 갔다..



서울 플러스 치과.
수서역에 있는 치과 이다.
지하 1층에 위치하고 있으며 그리 크지 않다.

자세한 설명도 해주고
뽑은 나의 이빨을 보여 주셨는데;;
정신이 없어 잘 보지도 못했다;; (크긴 큰듯;;)

암튼...
10분 정도의 사투결과 뽑혔다..
지금은 무척 아프다;;

하지만 아무데서도 뽑아주려고 하지 않은 누운이빨..
뽑고 나니 한편으론 시원하다;;;
그리고...
사랑니 뽑는 가격이 내렸는지 모르겠지만
다른곳 보단 싸다
스켈링 비용보다 완전 싸다 ㅋㅋ;
이 장소를 Daum지도에서 확인해보세요.
서울특별시 강남구 수서동 | 서울플러스치과
도움말 Daum 지도
Trackback 0 Comment 0