Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: skywook am 26.09.11 - 08:46:15
-
Hallo,
wie kann ich das Design bzw. Formeln einer Maske sperren. Der Rest der DB soll "offen" bleiben.
Für einen Tipp wäre ich dankbar.
-
http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp?topic=/com.ibm.designer.domino.main.doc/H_ABOUT_HIDING_THE_DESIGN_OF_A_DATABASE.html
-
Danke,
aber irgendwie funktioniert das nicht bei mir. Die ganze DB sperren das klappt. Aber nur die Maske geht leider nicht. Was mache ich falsch?
-
Einzelne Designelemente zu sperren, geht nicht.
-
Einzelne Designelemente zu sperren, geht nicht.
.. doch das geht - macht aber einigen Aufwand, da das Design dann in zwei Datenbanken gehalten werden muß. Beim Designrefresh werden die Design-Elemente dann aus den beiden Templates gezogen. Das eine Template mit der besagten Maske muß dann ein verborgenes Design haben... ;)
Toni
-
Danke ata,
aber wenn das Design (Db mit der Maske) verborgen ist. Wie bekomme ich dann die Maske in die "offene" DB?
-
Einzelne Designelemente zu sperren, geht nicht.
.. doch das geht - macht aber einigen Aufwand, da das Design dann in zwei Datenbanken gehalten werden muß. Beim Designrefresh werden die Design-Elemente dann aus den beiden Templates gezogen. Das eine Template mit der besagten Maske muß dann ein verborgenes Design haben... Wink
Klar, so wird es gehen. Wieder was dazugelernt ...
Danke ata,
aber wenn das Design (Db mit der Maske) verborgen ist. Wie bekomme ich dann die Maske in die "offene" DB?
Das Template ist natürlich "Offen" nur die aus dem Template erstelle Datenbank, die dann als Template für die Maske dient hat ein verborgenes design.
Wie Anton schon schrieb; ein etwas grösserer Aufwand.
Reicht es nicht aus, die "Business Logik" der Maske in eine ScriptLib auszulagern und diese dann zu verbergen?
-
Klar, so wird es gehen. Wieder was dazugelernt ...
... auch ein blindes Huhn findet ab und zu ein Korn ;) ;D
aber wenn das Design (Db mit der Maske) verborgen ist. Wie bekomme ich dann die Maske in die "offene" DB?
... du kannst bei jedem Designelement hinterlegen, aus welchem Template das Design gezogen werden soll. Für das erste Mal legst du also in deiner gemischten DB eine leere Maske an und beziehst dich für den DesignRefresh dann auf das Template mit dem verborgenen Design. Dort muß dann das Original der Maske liegen
Die Anregung von Ulrich hätte natürlich auch noch was... ;)
Toni
-
... oder beides, also Maske und Library - dann ist die Prozess-Logik wirklich geschottet - danke an Ulrich für's mitdenken...
Ansonsten hilft es auch, wenn man per Backend bestimmte Felder in den DesignDokumenten löscht - was ich aber nicht unbedingt empfehle, denn da muß man wirklich wissen was man tut. Das sollten nur wirkliche Experten machen... ;)
Toni
-
Danke an Alle.
Aber habe noch ein Problem.
Folgende DBs habe ich erstellt:
Als erstens eine Schablone mit offenen Design und der gewünschten Maske = maske.ntf.
Danach eine weitere Schablone mit Vorlage (Schablone für neue Anwendung angeben) aus der ersten DB (maske.ntf) aber mit verborgenen Design = maske_oD.ntf
Zuletzt dann eine neue DB (offenes Design), dort eine Dummy-Maske mit dem gleichen Namen wie aus maske_oD.ntf erstellt.
Jetzt müsste ich ich doch bei der Dummy-Maske im Bereich Gestaltung "Von Gestaltungsschablone übernehmen" den Namen der Schablone maske_oD.ntf eintragen. Aber da dort das Design verborgen ist - habe ich keinen Schablonenname. Der Dateiname oder der DB-Name funktioniert nicht.
Wo habe ich denn den Fehler?
-
... in den Eigenschaften der Db vergibst du den Templatenamen - den trägst du dann bei der Maske ein.
Die Maske muß in der produktiven DB drin sein - mit Bezug zur Schablone mit dem verborgenen Design, nicht aber in der Datenbank mit offenem Design...
-
Danke ata,
Irgendwie seh ich vor lauter Wald die Bäume nicht. Sorry.
... in den Eigenschaften der Db vergibst du den Templatenamen - den trägst du dann bei der Maske ein.
In der DB mit dem verborgenem Design (in dieser ist auch die Maske enthalten) kann ich in der DB-Gestaltung keinen Schabonennamen angeben. Da der Gestaltungsreiter leer bzw. gesperrt ist.
Somit habe ich auch keinen Schablonenname den ich in der offenen DB bei der Dummy Maske eintragen kann.
-
... ich habe irgendwo noch ne Demo rumliegen - ich schau morgen mal danach - ;)
-
... sorry - ich dachte ich hätte es auf meinem Laptop liegen - war aber nicht so. Da muß ich ein paar alte Platten checken - das könnte bis nächste Woche dauern - reicht das dann noch?
Toni
-
Das Prinzip ist doch eigentlich ganz einfach (obwohl ich das für solche Fälle niemals machen würde - siehe hierzu meine Vorposter):
- Es existiert eine Entwicklungs-Datenbank E.nsf
- Hieraus wird eine Schablone pOpen.ntf (Templatename pOpen) erzeugt
- Hiervon wird eine Ziel-Datenbank z.nsf erzeugt (einmalig)
- Aus der pOpen.ntf wird eine pTemp.ntf (TemplateName pClosed) erzeugt
- Entweder wird die betreffende Maske in z.nsf kopiert (dabei wird schon gefragt, ob weiterhin von pClosed das Design übernommen werden soll) oder dieser Templatename wird in die Maske in z.nsf manuell eingetragen.
- Es wird eine Kopie von pClosed.ntf erzeugt
- Von der ersten pClosed wird das Design der zweiten pClosed *gewechselt* mit gewählter Option hide design)
- Die erste pClosed.ntf wird gelöscht.
- Zukünftig wird aus pOpen.ntf die Maske gelöscht oder verfälscht.
Beim Designupdate von z.nsf wird dann "alles" Design von pOpen übernommen - nur die Maske kommt aus der hidden design pClosed.
Ich würde aber nochmals darüber nachdenken, ob der andere, bereits beschriebene Weg nicht vernünftiger ist.
HTH,
Bernhard
-
@Bernhard
Genauso habs ich auch gemacht. Schon mehrmals.
Aber beim Design-Refresh der z.nsf kommt dann der Fehler: Gestaltungsschablone PClosed die von Ziel DB benutzt wird,. wurde nicht gefunden.
Das Problem liegt darin. Wenn das Design von PClosed auf hide gewechselt wird, gibt es den Schablonen-Namen PClosed nicht mehr.
Ich verstehe es auch nicht.
-
... das scheint ein Problem in Version 8 zu sein. Mit Version 7 habe ich das so bei einem Kunden gelöst.
Ich habe den Weg aktuell auf dem 8er nachgestellt. Da verschwindet der eingestellte Templatename über den Design-Replace. Programmatisch lässt sich der Name nicht mittels LS bearbeiten - ReadOnly...
Ich werde also nochmals schauen...
-
@ata
Danke, ich habe schon gedacht ich bin zu b....
-
... nur die Ruhe ;) ;) :)
-
... was ist denn der ganaue Hintergrund deines Anliegens. Was soll verborgen sein, und was könnte auch sichtbar sein? Geht es um die Bearbeitbarkeit von LSCode und Formeln oder um Schutz von Know How?
-
... ich habe einen gangfähigen Weg gefunden, der Datenbank mit dem verborgenen Design den benötigten Mastertemplatenamen zuzuweisen, obwohl die Eigenschaft in der DB ReadOnly ist. Dabei ist die Maske in der gemischten Datenbank und alle Felder zu sehen, nicht aber Script-Code und Formeln in den Events / Aktionen...
Toni
-
..das hört sich ja super an. Kannst du die Lösung posten?
-
... der Weg ist recht simpel. Im Icon-Dokument der Datenbank ist der Titel und die Namen von Mastertemplate und InheritTemplate abgelegt. Dabei wird ein Chr(10) und ein Key verwendet. Der String hat dann folgendes aussehen:
DB.Title & Chr(10) & "#1" & sMastertemplate & Chr(10) & "#2" & sInheritTemplate
Das Icon-Dokument erhälst du über die Note-ID FFFF0010 - wenn ich mich nicht irre. Das Feld müßte $Title heißen. Die geschlossene Datenbank kann dann erben und vererben. Du musst die Variablen eben noch richtig zuweisen...
Toni ;)
-
Hier gibt es eine Klasse, die ein paar Sachen in puncto Template bietet http://chadsmiley.com/chadsmiley/2006/05/
-
... danke - soweit ich das im schnellen Überflug gesehen habe, wird dort mit DXL gearbeitet.
Toni
-
ja, aber nur, um das zusätzliche shared Field in das Design einzufügen, das für die emplate Versionierung benötigt wird.
-
... wer lesen kann ist klar im Vorteil ;) ;D ;D ;D