IT 관련 이야기/SharePoint

Moss 사용자 링크 팝업으로 열리게 하기

종소리도깨비 2008. 11. 6. 09:45
반응형

리스트의 사용자를 클릭하거나 기타 Moss화면에서 사용자 링크를 클릭하면

사용자 정보를 팝업으로 열리게 하는 방법입니다.

리스트의 사용자 부분의 소스를 보면 다음과 같은 형식으로 되어있다.

<A onclick="GoToLink(this);return false;" href="http://insung-moss/CommunityPortal/_layouts/userdisp.aspx?ID=43">강병욱</A>

따라서 GoToLink(this)를 수정하면 팝업으로 열리게 할 수 있다.

먼저 GoToLink(this)는 다음 경로에 있다. (기본경로에 설치했을경우)

- C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1042\CORE.JS

위 경로중 1042는 한글 언어를 사용할 경우를 의미한다. 다른 언어를 사용한다면 다른 폴더의 CORE.JS를 수정해야 한다.

CORE.JS파일을 열면 function GoToLink(elm) 펑션이 있다.

if (elm.href==null)

return;

var ch=elm.href.indexOf("?") >=0 ? "&" : "?";

var srcUrl=GetSource();

if (srcUrl !=null && srcUrl !="")

srcUrl=ch+"Source="+srcUrl;

var targetUrl=elm.href+srcUrl;

if (isPortalTemplatePage(targetUrl))

window.top.location=STSPageUrlValidation(targetUrl);

else

window.location=STSPageUrlValidation(targetUrl);

이 펑션을 다음과 같이 수정해 준다.

if (elm.href==null)

return;

var ch=elm.href.indexOf("?") >=0 ? "&" : "?";

var srcUrl=GetSource();

if (srcUrl !=null && srcUrl !="")

srcUrl=ch+"Source="+srcUrl;

var targetUrl=elm.href+srcUrl;

//사용자 정보를 팝업이 되도록 수정

//사용자 정보는 userdisp.aspx 페이지로 정보를 보내므로

//href에 userdisp.aspx가 있으면 팝업시킨다.

/*

if (isPortalTemplatePage(targetUrl))

window.top.location=STSPageUrlValidation(targetUrl);

else

window.location=STSPageUrlValidation(targetUrl);

*/

if(elm.href.indexOf("userdisp.aspx") >= 0)

{

window.open(targetUrl);

}

else

{

if (isPortalTemplatePage(targetUrl))

window.top.location=STSPageUrlValidation(targetUrl);

else

window.location=STSPageUrlValidation(targetUrl);

}

이 펑션은 단순히 호출자의 href의 경로에 Source 파라메터를 추가해서 해당 페이지를 href로 보내는 역할을 한다.

따라서 function GoToLink(elm) 은 모스 리스트에의 링크나 기타 링크등 많은 부분에서 호출된다.

그렇다면 해당 펑션을 호출한 대상이 사용자 링크라는 것을 분별을 해 줘야 하는데 그 부분에 if(elm.href.indexOf("userdisp.aspx") >= 0) 부분이다.

수정된 부분에서 if(elm.href.indexOf("userdisp.aspx") >= 0) 부분은

<A onclick="GoToLink(this);return false;" href="http://insung-moss/CommunityPortal/_layouts/userdisp.aspx?ID=43">강병욱</A>

여기서 봐서 알 수 있듯이 Moss에서 사용자 링크는 모두(아마도 -_-;) userdisp.aspx 가 처리한다.

따라서 경로에 userdisp.aspx 가 있다면 그것이 사용자 링크라고 봐도 무방하다.

사용자 링크라면 window.open(targetUrl)로 팝업을 시키게 된다.

물론 window.open(targetUrl) 부분에 파라메터를 추가해서 팝업창의 속성을 변경 시킬 수도 있다.

위 조건을 응용해서 다른 링크도 팝업으로 열 수 있도록 변경하는것도 가능해 보인다.

반응형