Domino 9 und frühere Versionen > ND9: Entwicklung
Art des Design-Elements herausfinden?
SD:
Guten Tag!
Gibt es zufällig einen Trick oder so, wie man man herausfinden kann, was für ein Design-Element man in den Fingern hat als NotesDocument?
Konkret erzeuge ich mit einem LotusScript-Agenten eine NotesNoteCollection mit allen Design-Elementen einer Datenbank und hole mir dann jedes davon als NotesDocument. Der Hauptzweck davon war eigentlich die Design-Signierer herauszufinden und zu prüfen, wo noch alte oder falsche Signaturen herumlungern. Es ist ja durchaus faszinierend/erschreckend, was man da so alles findet. Vor allem, was so alles offenbar nicht von "Sign all design elements" über den Admin-Client signiert wird. Außerdem haben Repliken signierte Elemente, die andere Repliken mit dieser Signatur nicht haben, etc., etc.
Einen Teil davon habe ich schon als persönliche Ansichten und Profildokumente identifiziert. Einiges ist mir aber ein Rätsel, was das überhaupt ist?! Das Feld $TITLE hilft bedingt weiter. Viele Design-Elemente haben dieses Feld gar nicht oder ich finde den Namen nicht, wenn ich mich im Designer durch die Datenbank klicke. Also würde mich jetzt schon ein wenig interessieren, was genau ich da in dem Moment eigentlich in den Fingern habe. Mir ist jetzt kein offensichtlicher Weg aufgefallen, wie ich herausfinden kann, ob das jetzt eine Form ist, oder ein Frameset, oder ein Image, oder sonstwas. Manche Design-Elemente haben Felder, die es nur bei ihnen gibt, aber damit bekomme ich auch nur bei einem Bruchteil heraus, was das denn nun ist. Gibt es da irgendeine Möglichkeit, wie ich zuverlässig herausbekomme, womit ich es zu tun habe?
Gruß
SD
Tode:
Das ist leider nicht ganz so einfach, sondern im Gegenteil recht komplex.
Hier ist die Formel, die wir in einer Spalte einer Ansicht unserer Applikationen haben, die alle Design- Elemente anzeigt. (Wie man eine solche Ansicht erzeugt: "Fun with $FormulaClass" als Google Suche, Ergebnis z.B. hier:
--- Code: ---_mainCat := @If( $Flags = "34yQC" ; "14-SHARED ACTIONS" ;
$Flags = "t34Q" ; "16-DATABASE SCRIPT" ;
$Flags = "#34CQ" ; "06-FRAMESETS" ;
$Flags = "345CgQ" ; "18-FILES" ;
@Contains( $Flags ; "34Q" ) ; "15-SCRIPT-LIBRARIES" ;
@Contains( $Flags ; "34Ci" ) ; "17-IMAGES" ;
@Contains( $Flags ; "f" ) & @Contains( $Flags ; "3" ) ; "13-AGENTS" ;
@Contains( $Flags ; "CU" ) & @Contains( $Flags ; "3" ) & @Contains( $Flags ; "x" ) ; "08-SUBFORMS" ;
@Contains( $Flags ; "W" ) ; "07-PAGES" ;
@Contains( $Flags ; "=" ) ; "19-STYLESHEETS" ;
@Contains( $Flags ; "m" ) ; "11-OUTLINES" ;
( @Contains( $Flags ; "Y" ) | @IsAvailable( $Collation ) ) ; @If( @Contains( $Flags ; "^" ) ; "10-COLUMNS" ; @Contains( $Flags ; "F" ) ; "03-FOLDERS" ; "02-VIEWS" ) ;
$Flags = "X" ; "UNKNOWN" ;
!($Fields != $Title) | ( (@Elements( $Fields ) = 1 | ( @IsUnavailable( $Fields ) & $Flags = "") ) & (@IsUnavailable($Comment) ) ) ; "09-FIELDS" ;
$Flags = "G3" ; "12-NAVIGATORS" ;
$Flags = "gC~4K" ; "04-XPAGES" ;
$Flags = "gC~4;" ; "05-CUSTOM CONTROLS" ;
@Contains( $Title ; ".theme" ) ; "20-THEMES" ;
@Contains( $Flags ; "~" ) ; "WEB-INF" ;
@Contains( $Flags ; "D" ) | @Contains( $Flags ; "C" ) | @Contains( $Flags ; "H" ) | $Flags = ""; "01-FORMS" ;
"" );
@If( !(_mainCat *= "03-FOLDERS" : "02-VIEWS") ; @Return( _mainCat ) ; "" );
_addCat := @If( @Contains( $Flags ; "V" ) ; "PRIVATE" ;
@Contains( $Flags ; "p" ) & @Contains( $Flags ; "o" ) ; "SHARED, DESKTOP PRIVATE ON FIRST USE" ;
@Contains( $Flags ; "p" ) ; "SHARED, PRIVATE ON FIRST USE" ;
"SHARED" );
_mainCat + "\\" + _addCat
--- Ende Code ---
jBubbleBoy:
Das kannst du mit dem DomNav machen, der liest die Gestaltung über Server ein und die Ansicht nach Signierer gibt dir eine Übersicht.
Für den eigenen Weg gibt es hier eine gute Beschreibung mit Beispiel-Code: http://www-10.lotus.com/ldd/ddwiki.nsf/dx/ls-design-programming.htm
SD:
Wow, das nenne ich mal ne Formel! Das hilft mir auf jeden Fall alles super weiter, vielen Dank!
Ich habe die Formel aus der Ansicht in LotusScript übersetzt und das funktioniert offenbar prima! Ein paar Design-Elemente haben wohl kein $Flags-Feld (ACL z.B., die hat dafür aber $ACLDigest), aber denen komme ich nach und nach auf die Spur. Auf dem Wege habe ich gerade einen privaten Agenten mit fremdem Certifier von 1996 gefunden. Da ist man fast schon versucht den einem Museum zu spenden.
Es gibt da Design-Dokumente, die bestehen nur aus einem $Flags-Feld mit dem Wert "X" (steht laut Formel oben für "UNKNOWN") und einem UpdatedBy-Feld, keine Signatur, isprofile ist False, sonst auch nichts da. Immerhin isvalid ist True. :D Size ist "32". Entgeht mir da die Pointe? Gibt es irgend ne theoretische Möglichkeit, dass das was ist, was noch irgend ne Funktion hat? Oder kann das ein Replikationsunfall sein, oder sowas? :-:
Tode:
Das UNKNOWN kommt von mir, weil ich auch nicht mehr über diese Dinger rausgefunden habe als Du...
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln