Poste einfach deinen source code.
konkreter Ansatz.
Vorschlag:
Du tust das in den htmlHead:
<style>
<!--
#foldheader{cursor:pointer;cursor:hand ; font-weight:bold ;
list-style-image:url(fold.gif)}
#foldinglist{list-style-image:url(list.gif)}
//-->
</style>
<script language="JavaScript1.2">
<!--
//Smart Folding Menu tree- By Dynamic Drive (rewritten 03/03/02)
//For full source code and more DHTML scripts, visit http://www.dynamicdrive.com
//This credit MUST stay intact for use
var head="display:''"
img1=new Image()
img1.src="fold.gif"
img2=new Image()
img2.src="open.gif"
var ns6=document.getElementById&&!document.all
var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
function checkcontained(e){
var iscontained=0
cur=ns6? e.target : event.srcElement
i=0
if (cur.id=="foldheader")
iscontained=1
else
while (ns6&&cur.parentNode||(ie4&&cur.parentElement)){
if (cur.id=="foldheader"||cur.id=="foldinglist"){
iscontained=(cur.id=="foldheader")? 1 : 0
break
}
cur=ns6? cur.parentNode : cur.parentElement
}
if (iscontained){
var foldercontent=ns6? cur.nextSibling.nextSibling : cur.all.tags("UL")[0]
if (foldercontent.style.display=="none"){
foldercontent.style.display=""
cur.style.listStyleImage="url(open.gif)"
}
else{
foldercontent.style.display="none"
cur.style.listStyleImage="url(fold.gif)"
}
}
}
if (ie4||ns6)
document.onclick=checkcontained
//-->
</script>
Das bringst du in eine treatContentAsHtml Ansicht:
<ul>
<li id="foldheader">News</li>
<ul id="foldinglist" style="display:none" style=&{head};>
<li><a href="http://www.cnn.com">CNN</a></li>
<li><a href="http://www.abcnews.com">ABC News</a></li>
<li><a href="http://www.news.bbc.co.uk">BBC News</a></li>
</ul>
<li id="foldheader">Webmaster</li>
<ul id="foldinglist" style="display:none" style=&{head};>
<li><a href="http://www.dynamicdrive.com">Dynamic Drive</a></li>
<li><a href="http://www.javascriptkit.com">JavaScript Kit</a></li>
<li><a href="http://www.freewarejava.com">Freewarejava.com</a></li>
</ul>
<li id="foldheader">Nested Example</li>
<ul id="foldinglist" style="display:none" style=&{head};>
<li><a href="http://www.dynamicdrive.com">outer 1</a></li>
<li><a href="http://www.dynamicdrive.com">outer 2</a></li>
<li id="foldheader">Nested</li>
<ul id="foldinglist" style="display:none" style=&{head};>
<li><a href="http://www.dynamicdrive.com">nested 1</a></li>
<li><a href="http://www.dynamicdrive.com">nested 2</a></li>
</ul>
<li><a href="http://www.dynamicdrive.com">outer 3</a></li>
<li><a href="http://www.dynamicdrive.com">outer 4</a></li>
</ul>
</ul>
Müsste gehen.
Gruß Axel
kannst du vielleicht die .nsf ein bischen abspecken und die entscheidenden Teile da drin lassen und hier posten. So ist das ein bischen schwierig.
Es gibt noch relativ wilde Möglichkeiten mit so Dingen wie @DocNumber und @DocSiblings.
Aufgabe:
Finde das erste und letzte Dokument einer Kategorie: Dort muss es nämlich <ul><li>Wert</li> bzw. <li>Wert</li></ul> statt <li>Wert</li> heissen.
Normalerweise kann man mit den Rückgaben von @DocNumber und @DocSiblings nicht soviel anfangen, da es nicht weiterverarbeitbarer "special text" ist. Mit JavaScript geht das aber.
Du musst dann die Spaltenformel irgendwie in der Art aufbauen:
["<script>" +
"wertNachLetztemPunkt = someJavaScriptStringHandling(" + @DocNumber + ")" +
"if(wertNachLetztemPunkt== "1") {document.write(\"<ul>\")}" +
"documentWrite(<li>" + wert + "</li>)" +
"if(wertNamLetztemPunkt == " + @docSiblings + ") document.write(\"</ul>\") </script>"
Das könnte so gehen.
Vielleicht finde ich Zeit, dass noch an einem Mini-Beispiel durchzuziehen.
Gruß Axel
Andreas,
probier das attachment mal aus. Ansicht docs dieser Datenbank im Web anzeigen lassen und wenn das so richtig ist in deine Datenbank das script rüberkopieren und ggbfls ein wenig anpassen.
Hier ist Spaltenformel:
nl:= @NewLine;
"[<script>" + nl +
"// DocNumber as String " + nl +
"var val = \"" + @DocNumber + "\";" + nl +
"// find last number." + nl +
"var elemente = val.split(\".\");" + nl +
"// assign lastNumber to variable " + nl +
"var sLastNumber=elemente[elemente.length - 1];" + nl +
"// assign variable sCountSiblings " + nl +
"var sCountSiblings=\"" + @DocSiblings + "\";" + nl +
"// if its first document, open <ul> tag" + nl +
"if (sLastNumber == \"1\") document.write (\"<ul>\");" + nl +
"//write content of field inside <li>-tag" + nl +
"document.write(\"<li>" + name + "</li>\")" + nl +
"// if its last document in category, close </ul>-tag" + nl +
"if(sLastNumber == sCountSiblings) document.write(\"</ul>\");" + nl +
"</script>]"
Kommentare in Script verbessert.
Das ist mein alter Trick des Programmiersprachen-Chainings.
Du schreibst serverseitig mit Formelsprache in der Spaltenformel dynamisch JavaScript.
Dieses JavaScript schreibt clientseitig html.
Und so kann man specialText weiterverarbeiten.
Gruß Axel
@Andreas: Kannst du nicht die relevanten Teile in eine lauffähige kleine Mini-Anwendung packen. So ist das einfach mission imposible.
Für Resonses gibt es in Script:
NotesDocumentCollection col = doc.responses
Problem dabei ist, dass die Collection unsortiert ist.
Besser ist eigentlich eine dynamische View-Formelsprachenlösung. Das scheint hier aber nicht trivial zu sein.
Gruß Axel
Ich glaub du musst das
Set response2 = v.getchild(response)
While Not ( response2 Is Nothing )
stringvar = stringvar + {<h1><a href="http://spsrv1/igusIntranet80_b.nsf/content/} & response2.uniqueid(0) & {?Opendocument" target="content">} & response2.CCSubject(0) & {</a></h1>}
Set response2 = v.GetNextSibling( response2 )
If (response2 Is Nothing) Then
stringvar = stringvar + {</SPAN>}
End If
Wend
vor das wend darüber packen. Und davor noch ein öffnendes Span legen.
Es ist wirklich nicht einfach ohne Daten.
... und ich mache ja gerade deshalb "ach-so-schwierige" Objekt Orientierung, um solche "einfachen" Schleifenkonstruktionen zu vermeiden.
Das ist wohl mehr was für "richtige Programmierer". ;D
Vielleicht hilft es, wenn du das Resultat.
Also das ausgedruckte html postest:
Und zwar den Ist Zustand und den Sollzustand.
Ausserdem werde ich jetzt noch bis 21:00 Uhr im Büro sitzen und morgen auch.
Gruß Axel