2008-09-15 5 views
0

현재 프로젝트에서 SAP의 많은 포털 기능을 무시하고 있습니다. 사용자 정의 고정 너비 프레임 워크, 사용자 지정 iView 용지함, 사용자 지정 KM API 기능 등을 만들어야합니다.SAP 포털의 대체 스타일 (CSS) 메소드?

이 모든 사용자 정의 파트를 사용하여 SAP 테마 편집기에서 구현 한 많은 스타일 기능을 사용하지 않을 것입니다. 내가하고 싶은 것은 외부 CSS를 만들어 포털 외부에 저장하고 참조하는 것입니다. 외부에 저장하면 CSS를 포털 응용 프로그램에 저장하는 것이 아니라 쉽게 업데이트 할 수 있습니다. 또한 모든 맞춤 제작품이 한 번에 스타일을 가질 수 있습니다.

외부 스타일 시트를 삽입 할 수있는 페이지의 HEAD 부분에 액세스하는 방법을 찾지 못했습니다. 포털 응용 프로그램은 IResource 개체를 사용하여 내부 참조에 액세스 할 수 있지만 다른 서버의 항목에는 액세스 할 수 없습니다.

이 기능을 사용할 수있는 아이디어가 필요합니다. 내가 x-posted on SAP's SDN을 가지고 있지만 더 나은 대답을 얻을 수 있을지 의심됩니다.

답변

1

나는 더러운 해킹을 고려해 보았지만 포털 개발자가 아닌 개발자는 자바 스크립트를 사용하여 새 CSS 파일을 가리키는 머리글에 새 링크 요소를 삽입하는 방법을 고려했습니다. 물론 페이지의 일부가 다운로드되어 렌더링 될 때까지 스크립트가 실행되지 않기 때문에 스타일이없는 콘텐츠가 플래시 될 수 있지만 적절한 해결책이 될 수 있습니다.

0

나는 내 자신의 질문에 답하고있는 것이 싫지만, 잘 설명되어 있지 않은 잠재적 인 해결책을 발견했으며 전형적인 SAP 패션에서는 사용되지 않는 방법을 사용합니다. 에릭이 제안한 것보다 약간 더러운 해킹 일 수도 있습니다. 관련없는 SDN 포럼 게시판을 통해 발견했습니다.

기본적으로 요청 개체로 들어가서 PortalNode를 수집합니다. 일단 IPortalResponse 값을 요청하면됩니다. 이 객체는 PortalHtmlResponse로 형변환 될 수 있습니다. 이 객체에는 getHtmlDocument라는 사용되지 않는 메소드가 있습니다. 이 방법을 사용하면 일부 Html 미러 객체를 사용하여 헤드를 가져 와서 새 링크를 삽입 할 수 있습니다.

샘플 :

IPortalNode node = request.getNode().getPortalNode(); 
IPortalResponse resp = (IPortalResponse) node.getValue(IPortalResponse.class.getName()); 
if (resp instanceof PortalHtmlResponse) { 
    PortalHtmlResponse htmlResp = (PortalHtmlResponse) resp; 
    HtmlDocument doc = htmlResp.getHtmlDocument(); 
    HtmlHead myHead = doc.getHead(); 
    HtmlLink cssLink = new HtmlLink("http://myserver.com/css/mycss.css"); 
    cssLink.setType("text/css"); 
    cssLink.setRel("stylesheet"); 
    myHead.addElement(cssLink); 
}