Zu 1.)
Wenn die Daten Cachbar sind, dann würde ich dir empfehlen, den bestehenden Agenten dazu zu bringen, Userdokumente anzulegen und dort die Kategorien abzulegen
Zu 2.)
Ja, würde sie. Bzw. die Daten vorhalten. Das geht aber auch per SSJS, hier ein Beispiel:
/***
* Global function to get a CurrentUser object from sessionScope.
* Creates a new CurrentUser object if there is none in the scope.
*
* @author Sven Hasselbach
* @return a CurrentUser object
*/
function getCurrentUserObjFromScope() {
var cUser;
if (!sessionScope.containsKey("user")) {
synchronized(sessionScope) {
cUser = new CurrentUser();
sessionScope.put("user", cUser);
}
}
cUser = sessionScope.get("user");
return cUser;
}
/***
* User Object
*
* @author Sven Hasselbach
*/
function CurrentUser(){
var _navigatiorObj = null;
/**
* @return Navigator object
*/
this.getNavigator = function(){
if( typeof this._navigatorObj === 'undefined' )
this.setNavigator( loadNavigator() );
return this._navigatorObj;
}
/**
* @param Navigator object
*/
this.setNavigator = function( navObj){
this._navigatorObj = navObj;
}
/**
* load Navigator
* @return navigation object
*/
function loadNavigator(){
// do lookup or whatever
var v = new java.util.Vector();
v.add("1");
v.add("2");
v.add("3");
return v;
}
}
Als SSJS library kann der Code in der XPage dann mit
getCurrentUserObjFromScope().getNavigator();
ausgelesen werden.
Zu 3.)
Dann solltest Du den ExtLib Navigator verwenden. Dort gibt es die repeatTreeNode, die kann dafür wunderbar verwendet werden. Dafür könntest Du dann noch ein SSJS Objekt im Userscope ablegen, das die nötigen Eigenschaften hat.
Hallo Miteinander,
das mit dem Navigator hörte sich gut an.
Funktioniert auch soweit (Test!):
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">
<xe:navigator id="nav1" expandable="true">
<xe:this.treeNodes>
<xe:basicContainerNode label="ArtikelGruppe1">
<xe:this.children>
<xe:repeatTreeNode loaded="true" indexVar="index"
var="tempData">
<xe:this.children>
<xe:basicLeafNode loaded="true"
label="#{javascript:tempData;}">
</xe:basicLeafNode>
</xe:this.children>
<xe:this.value><![CDATA[#{javascript:
return ["TEST1","TEST2","TEST3"];}]]></xe:this.value>
</xe:repeatTreeNode>
</xe:this.children>
</xe:basicContainerNode>
</xe:this.treeNodes>
</xe:navigator>
</xp:view>
Allerdings hab ich die Aufgabenstellung, dass auch die Tiefe der Navigation dynamisch ist.
Ich bekomm vom Backend (nicht Notes!) Daten im folgenden Aufbau:
<Gruppe id="G1">
<Artikel id="A1" />
<Artikel id="A2" />
<UnterGruppe id="U1">
<Artikel id="A6" />
<UnterGruppe id="UU1">
<Artikel id="A4" />
<Artikel id="A5" />
</UnterGruppe>
</UnterGruppe>
</Gruppe>
Also Müsste man hier wohl auch die repeatTreeNode schachteln.
Fest ist nur die oberste Ebene (in dem Beispiel id = "G1")
Hat das schon jemand gemacht? Ich würd mich über ein Beispiel freuen!
Schönes Wochenende!
Marcus