리스트의 사용자를 클릭하거나 기타 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) 부분에 파라메터를 추가해서 팝업창의 속성을 변경 시킬 수도 있다.
위 조건을 응용해서 다른 링크도 팝업으로 열 수 있도록 변경하는것도 가능해 보인다.
'IT 관련 이야기 > SharePoint ' 카테고리의 다른 글
규칙을 이용하여 외부 메일로 메일 재전송 설정이 안될 때 (0) | 2009.04.07 |
---|---|
MOSS/WSS 의 대용량 파일 업로드 설정하기 (0) | 2009.04.06 |
[팝업 시리즈 2] MOSS 내사이트 팝업으로 열기 (0) | 2009.04.06 |
MOSS 도움말 안나올 때... (0) | 2009.04.06 |
[팝업 시리즈1] MOSS "URL" 필드 새창으로 팝업 시키기. (0) | 2009.04.06 |