2011-04-08 5 views
0

재정의하려는 기본 동작에 대한 간략한 설명 : SharePoint 목록을 만들고보기에서 "제목 (링크 된 항목)"을 사용하면 해당 목록의 DispForm에 대한 링크가 제공됩니다. 기본적으로이 링크는 URL 쿼리 문자열에 Source 매개 변수를 추가합니다.링크의 원본 매개 변수 사용 안 함

보기가 정의 될 때 SharePoint에서 만든 기본 목록보기 웹 파트를 유지하면서이 동작을 사용하지 않도록 설정하고 싶습니다.

분명히하기 위해 목록 뷰 웹 파트를 XSLT로 변환 한 다음이 동작을 제어하는 ​​방법을 알고 있습니다. 가능하다면 헬프 데스크에서 목록보기를 쉽게 지원하고 표준 목록보기의 장점 (예 : Excel로 내보내기 등)을 계속 유지할 수 있도록 계속하고 싶습니다.

아이디어가 있으십니까? 미리 도움을 주셔서 감사합니다. Troy

+0

Javascript/jQuery 솔루션 사용에 반대하십니까? – CBono

+0

전혀 아닙니다. Javascript를 선호하지만 어느 쪽이든 열 수 있습니다. –

+0

SharePoint에서 매개 변수를 추가하는 방법에 따라 다른 해결책을 제안했습니다. 아직 자바 스크립트가 포함되어 있지만 예상했던 것과 다른 방식으로 진행됩니다. 희망 당신은 그것을 유용하게 찾을 수 있습니다. – CBono

답변

1

SharePoint (2007)는 GoToLink이라는 javascript 메서드에 source 매개 변수를 동적으로 추가합니다. 이 방법은 SharePoint의 core.js 파일에 정의되어 있으며 원본 파일을 편집하지 않고도 쉽게 사용자 지정할 수 있습니다. 사실, 그 파일을 직접 편집하고 싶지는 않습니다. SharePoint는 "지원되지 않는"상태가됩니다.

사용자 지정을위한 솔루션을 만들므로 일관된 방식으로 쉽게 배포하거나 철회 할 수 있습니다. GAC 배포를 대상으로 Visual Studio에서 빈 SharePoint 솔루션을 새로 만듭니다. 프로젝트 내에서 다음과 같은 폴더 구조를 만들 :

  • 템플릿
    • 레이아웃
      • 1033

("1033"영어 지역화입니다 경우 당신은 다른 언어를 사용하고 있습니다, 귀하의 ID는 다를 것입니다).

"1033"내에 새 Javascript 파일 (우리는 "CustomCore.js"라고 함)을 만듭니다. 여기에는 Core.js에서 재정의하려는 코드 만 포함됩니다. GoToLink가 우리가 관심을 가지고있는 유일한 것이므로 여기에 집중하겠습니다. 다음은 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); 
} 

별로 중요하지 않습니다. 재정의하려면 source 매개 변수를 추가하는 비트를 생략하면됩니다. 내 계산에서 수정 된 방법은 다음과 같습니다.

function GoToLink(elm) { 
    if (elm.href==null) 
     return; 
    if (isPortalTemplatePage(elm.href)) 
     window.top.location=STSPageUrlValidation(elm.href); 
    else 
     window.location=STSPageUrlValidation(elm.href); 
} 

그래야합니다. 솔루션을 패키지화하고 Visual Studio는 WSP를 만들 때 "Templates"폴더 구조를 올바르게 해석해야합니다 (TemplateFile 요소에 대해 생성 된 매니페스트 파일을보고 "Layouts \ 1033 \ CustomCore.js"로 배포).

WSP 솔루션을 SharePoint에 배포 한 후에는 마스터 페이지에서 최종적으로 참조해야합니다. 마스터 페이지의 HEAD 섹션에 코어가 표시되어야합니다.JS는 다음과 같이 참조되는 :

<SharePoint:ScriptLink Language="javascript" runat="server" Defer="True" Name="core.js"/> 

우리는 단순히 직접이 줄 아래에 새로운 JS 파일에 대한 참조를 추가

<SharePoint:ScriptLink Language="javascript" runat="server" Defer="True" Name="core.js"/> 
<SharePoint:ScriptLink Language="javascript" runat="server" Defer="True" Name="customcore.js"/> 

테스트 그것을하고 제대로 작동하는지 확인하십시오. 이 작업은 "CustomCore.js"를 배포하고 마스터 페이지를 사용하는 서버의 모든 목록에 영향을줍니다.

+0

환상적인 정보. 감사! 모든 사이트의 링크에 영향을주는 것은 사실 나를위한 선택 사항은 아니지만이 정보는 분명히 올바른 방향으로 나아가는 단계입니다. 사용자 정의 마스터 페이지를 사용합니다.이 문제가 충분히 커지면이 문제에 대해 두 번째 마스터 페이지가있는 경우를 만들 수 있습니다. 나는 이것으로 계속 놀고 내가 얻을 수있는 곳을 보게 될 것이다. 다시 한번 감사드립니다. –