PAL Portal (J2 デスクトップの調査)

現在、J2 デスクトップの仕組みを調査中。とりあえず、さわやかなテーマを作ろうと思い、desktop-themesにあるblueをコピーして、sky を作る。そんで、流れを確認開始。まず、JSP (Velocityはサポートしてないような気もするけどどうなんだろ)に、

<script language="JavaScript" type="text/javascript">
function init()
{
jetspeed.initializeDesktop( '<%= desktop.getDesktopTheme() %>', de_jsessionid_url( '<%= desktop.getDesktopThemeRootUrl() %>' ) );
}
function doRender( url, portletEntityId )
{
jetspeed.doRender( url, portletEntityId );
}
function doAction( url, portletEntityId, currentForm )
{
jetspeed.doAction( url,portletEntityId, currentForm );
}
dojo.event.connect( dojo, "loaded", "init" );
</script>

と言う感じであり、ページがロードされたところで、init()が呼ばれるのね。doRenderやdoActionは、表示されたポートレットから何かアクションなどが起こったら、呼ばれるものっぽい。jetspeed.initializeDesktopはjavascript/desktop/core/core.jsで定義されている。そこで、デスクトップテーマ名とか渡すのだね。そんで、

jetspeed.initializeDesktop = function( desktopThemeName, desktopThemeRootUrl )
{
jetspeed.url.pathInitialize();
jetspeed.prefs.desktopTheme = desktopThemeName;
jetspeed.prefs.desktopThemeRootUrl = desktopThemeRootUrl;
jetspeed.loadPage();
//jetspeed.currentTaskbar = new jetspeed.ui.PortalTaskBar() ;
};

という処理がされるみたい。そういえば、以前にみたときは、タスクバーみたいのが表示されていたような気がしたけど、ここでコメントアウトされたので、表示されなくなったのかね。jetspeed.url.pathInitialize();は、以下のような感じで、

jetspeed.url.pathInitialize = function( force )
{
if ( ! force && jetspeed.url.path.initialized ) return;
var baseTag = null;
var baseTags = document.getElementsByTagName( "base" );
if ( baseTags && baseTags.length == 1 )
baseTag = new dojo.uri.Uri( baseTags[0].href );
else
baseTag = new dojo.uri.Uri( window.location.href );
var basePath = baseTag.path;
var sepPos = -1;
for( var startPos =1 ; sepPos <= startPos ; startPos++ )
{
sepPos = basePath.indexOf( "/", startPos );
if ( sepPos == -1 )
break;
}
var serverUri = "";
if ( baseTag.scheme != null) { serverUri += baseTag.scheme + ":"; }
if ( baseTag.authority != null) { serverUri += "//" + baseTag.authority; }
var jetspeedPath = null;
if ( sepPos == -1 )
jetspeedPath = basePath;
else
jetspeedPath = basePath.substring( 0, sepPos );
//dojo.debug( "pathInitialize  new-JETSPEED=" + jetspeedPath + " orig-JETSPEED=" + jetspeed.url.path.JETSPEED + " new-SERVER=" + serverUri + " orig-SERVER=" + document.location.protocol + "//" + document.location.host );
jetspeed.url.path.JETSPEED = jetspeedPath;
jetspeed.url.path.SERVER = serverUri;
jetspeed.url.path.AJAX_API = jetspeed.url.path.JETSPEED + "/ajaxapi";
jetspeed.url.path.DESKTOP = jetspeed.url.path.JETSPEED + "/desktop";
jetspeed.url.path.PORTLET = jetspeed.url.path.JETSPEED + "/portlet";
jetspeed.url.path.initialized = true;
}

アクセスに必要なURLを設定しているみたいだね~。そんで、次にloadPage()にいって、

jetspeed.loadPage = function()
{
jetspeed.loadDebugWindow();
jetspeed.page = new jetspeed.om.Page();
jetspeed.page.retrievePsml();
};

PSMLを探し始めるようだ。

今日は時間切れでここまで・・・

コメントを残す

メールアドレスが公開されることはありません。