Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: skywook am 26.09.11 - 08:46:15

Titel: Design einer Maske sperren
Beitrag 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.
Titel: Re: Design einer Maske sperren
Beitrag von: m3 am 26.09.11 - 09:39:54
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
Titel: Re: Design einer Maske sperren
Beitrag von: skywook am 26.09.11 - 10:15:43
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?
Titel: Re: Design einer Maske sperren
Beitrag von: eknori am 26.09.11 - 10:24:23
Einzelne Designelemente zu sperren, geht nicht.

Titel: Re: Design einer Maske sperren
Beitrag von: ata am 26.09.11 - 10:30:03
Zitat
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
Titel: Re: Design einer Maske sperren
Beitrag von: skywook am 26.09.11 - 10:53:35
Danke ata,
aber wenn das Design (Db mit der Maske) verborgen ist. Wie bekomme ich dann die Maske in die "offene" DB?
Titel: Re: Design einer Maske sperren
Beitrag von: eknori am 26.09.11 - 11:20:49
Zitat
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 ...

Zitat
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?
Titel: Re: Design einer Maske sperren
Beitrag von: ata am 26.09.11 - 11:32:08
Zitat
Klar, so wird es gehen. Wieder was dazugelernt ...
... auch ein blindes Huhn findet ab und zu ein Korn  ;) ;D


Zitat
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
Titel: Re: Design einer Maske sperren
Beitrag von: ata am 26.09.11 - 13:40:49
... 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
Titel: Re: Design einer Maske sperren
Beitrag von: skywook am 26.09.11 - 14:17:52
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?


Titel: Re: Design einer Maske sperren
Beitrag von: ata am 26.09.11 - 17:06:10
... 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...
Titel: Re: Design einer Maske sperren
Beitrag von: skywook am 26.09.11 - 20:51:18
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.
Titel: Re: Design einer Maske sperren
Beitrag von: ata am 26.09.11 - 21:05:00
... ich habe irgendwo noch ne Demo rumliegen - ich schau morgen mal danach -  ;)
Titel: Re: Design einer Maske sperren
Beitrag von: ata am 27.09.11 - 10:55:21
... 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
Titel: Re: Design einer Maske sperren
Beitrag von: koehlerbv am 27.09.11 - 11:06:15
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
Titel: Re: Design einer Maske sperren
Beitrag von: skywook am 27.09.11 - 11:43:28
@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.
Titel: Re: Design einer Maske sperren
Beitrag von: ata am 27.09.11 - 11:50:17
... 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...
Titel: Re: Design einer Maske sperren
Beitrag von: skywook am 27.09.11 - 12:52:53
@ata

Danke, ich habe schon gedacht ich bin zu b....
Titel: Re: Design einer Maske sperren
Beitrag von: ata am 27.09.11 - 14:13:24
... nur die Ruhe ;) ;) :)
Titel: Re: Design einer Maske sperren
Beitrag von: ata am 27.09.11 - 14:17:52
... 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?
Titel: Re: Design einer Maske sperren
Beitrag von: ata am 27.09.11 - 15:29:35
... 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
Titel: Re: Design einer Maske sperren
Beitrag von: skywook am 27.09.11 - 19:35:15
..das hört sich ja super an. Kannst du die Lösung posten?
Titel: Re: Design einer Maske sperren
Beitrag von: ata am 28.09.11 - 06:29:15
... 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 ;)

Titel: Re: Design einer Maske sperren
Beitrag von: eknori am 28.09.11 - 06:41:10
Hier gibt es eine Klasse, die ein paar Sachen in puncto Template bietet http://chadsmiley.com/chadsmiley/2006/05/
Titel: Re: Design einer Maske sperren
Beitrag von: ata am 28.09.11 - 07:42:10
... danke - soweit ich das im schnellen Überflug gesehen habe, wird dort mit DXL gearbeitet.

Toni
Titel: Re: Design einer Maske sperren
Beitrag von: eknori am 28.09.11 - 08:44:03
ja, aber nur, um das zusätzliche shared Field  in das Design einzufügen, das für die emplate Versionierung benötigt wird.
Titel: Re: Design einer Maske sperren
Beitrag von: ata am 28.09.11 - 10:53:12
... wer lesen kann ist klar im Vorteil  ;) ;D ;D ;D