Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: adminnaddel am 03.09.02 - 13:32:44
-
Hallo liebe Gemeinde,
mein altes Problem, welches, so glaube ich, schwieriger Aussieht als es wirklich ist!
Geposted hatte ich schon die Geschicht mit Dokumenten im Web, die nicht jeder editieren soll. Das Problem lag daran, das man keine Server-Administrativen Einstellungen machen kann und jeder User als Anonymouse auf die Db im Web Zugriff hat.
Leser-Felder und Passwort-Felder greifen nicht.
Folgende Gedanken von mir!
Wie wäre es mit einem kleinen Script im Querryopen der Form, welches Unterscheiden kann ob Edit-Modus oder Read-Modus, das dann beim Edit-Modus nach einem Hardgecodetem Passwort fragt, wenn falsch dann weg hier! Ein neues Dokument => dann keine Eingabe erforderlich!
zB realisierbar durch eine (na wie heisst sie nochmal) inputbox???
Das ist jetzt ganz ehrlich gemeint: Ich brauche hilfe!!!
MfG
-
keine Antwort parat, aber was ist denn aus dem damaligen Vorschlag geworden? Zu kompliziert oder woran ist es gescheitert?
-
Hallo @Rob_Green,
wenn ich Deinen vorherigen Vorschlag richtig interpretier, dann wird selbst im Read-Modus ein Passwort abgefragt und das soll natürlich nicht sein!
Gruß
-
hm..so detailiert hatten wir es nicht ausgearbeitet, das wäre auch völlig unlogisch vom Design her! Wenn, dann kann die Story nur so gehen, daß der USer aktiv etwas veranlasst, um das Doc in den Edit Mode zu heben (halt einen edit button..der die Abfrage-Routine startet)
edit: lese gerade, dass die Passwortabfrage ausdrücklich doch Dein Wunsch war, und zwar beim LESEN und VOR DEM EDITIEREN..
Beim erstellen sage ich dem Doc, pass auf, du bist sofort Passwort geschützt!!!...komme ich, oder vielleicht du übers web auf die Ansicht und willst das Doc öffnen, sagt er: Ätsch...gib mir Passwort!
Da also nur ich dieses kenne, bin dann hoffentlich auch ich nur berechtigt dieses zu bearbeiten bzw zu lesen
also, admin, ich helf gerne, aber wenn Du jetzt schon wie ein DAU nicht weißt, wo es langgeht, wirst Du kaum vernünftige Hilfe erhalten, befürchte ich.
-
Prima @Rob_Green,
so soll es sein! Es wird also eine Edit Button geben, der jedem die Möglichkeit bietet, ein Dokument zu erstellen.
Nun läuft eine Routine ab, die zum Beispiel QueryOpenDocument ein PopUp Fenster zur Eingabe bringt! Ist die Eingabe richtig, los geht es...ist die Eingabe falsch, dann ein PopUp Fenster mit Ätsch!!!
ABER NUR WIE DAS GANZE EINBINDEN; ERSTELLEN UND AUCH NOCH WEBFÄHIG MACHEN? ???
Gruß
-
hi, wieder back ..
ich habe mal schnell ne maske für dich gekrizzelt:
1. Feld "TEXTEINGABE"
Hidden im Lesemodus
kein Vorgabewert
2. Feld "PASS"
Hidden =für Lesemodus und @isnewdoc
kein Vorgabewert
3. Feld "HIST"
Hidden im EDITMODUS
Berechnet mit Formel:
{a:=@If( @IsNewDoc;texteingabe;
!@IsNewDoc & pass=hid;texteingabe;
hist);
@If(!@IsNewDoc & pass!=hid;
@SetField("texteingabe";"");void);
a}
4. Feld "HID"
Hidden =für EDITMODE und !@isnewdoc
kein Vorgabewert
In das WEBQUERYSAVE Event der Maske kommt ein Aufruf eines Agenten, Name "(check)" per command-toolsrunmacro
Und der WebQuerySave Agent selbst, manuell aus der List, run once:
Sub Initialize
Dim session As New NotesSession
Dim doc As NotesDocument
Set doc = session.DocumentContext
Dim temppass As String
Dim hidpass As String
temppass = doc.pass(0)
hidpass = doc.hid(0)
If Not doc.isnewnote Then
If temppass = hidpass Then
doc.pass = ""
Print "[http://localhost/Gliederung.nsf/Sender?OpenView]"
Else
continue=False
Print "[http://localhost/Gliederung.nsf/Sender?OpenView]"
End If
Else
doc.texteingabe=""
Print "[http://localhost/Gliederung.nsf/Sender?OpenView]"
End If
End Sub
Zunächst:
Du kannst - zur Wiederholung wie im ersten Thread von Dir zu diesem Thema - keine QuerySave, QueryOpen Events ansprechen...im Web...die triggern nicht los. Dafür gibt es das Event WebQueryOpen (vor generieren des HTML Codes) und WebQuerySave (und vor submit der Form) in der Maske, die einen Agent aufrufen.
Also was passiert?
Beim erstellen der Maske erscheinen sichtbar die Felder
TEXTEINGABE und HID. In Texteingabe kommt Dein Text rein, in HID Dein Passwort.
Bei Speichern wird der Agent erstmalig aufgerufen.
Es wird der Part
Else
doc.texteingabe = ""
Print "[http://localhost/Gliederung.nsf/Sender?OpenView]"
End If
ausgeführt. Er leert das Texteingabefeld. Der darin enthaltene Text wird in das berechnete, im EDITMODe versteckte Feld "HIST" übernommen. Dazu ist die Formel im HIST Feld verantwortlich, aber nur der erste Teil:
a:=@If( @IsNewDoc;texteingabe; !@IsNewDoc & pass=hid;texteingabe;hist);
...
a
Hier übernimmt HIST den Inhalt von "texteingabe", da es sich um ein neues Doc handelt.
Über {Print "[http://localhost/Gliederung.nsf/Sender?OpenView]"} wird die Ausgangsansicht wieder aufgerufen (hier hardcodiert).
Nun editieren wir das Doc......das lasse ich zu...yep...nun werden die Felder
TEXTEINGABE und PASS eingeblendet. HID (das Feld mit dem Passwort) ist versteckt und wird auch nicht im HTML Code angezeigt! Der User kann nun etwas neues eingeben (oder aus dem Feld HIST den Inhalt kopieren und verändern...dazu dann eben das Hide When komplett für HIST rausnehmen...ist ja eh nicht editierbar). Aber, er muß ins Feld PASS sein Passwort eingeben, was er vormals bei der Erstellung des Docs verwendet hat.
Nun triggert beim Speichern wieder der WebQuerySave los. Nunmehr wird dieser Teil im LS ausgeführt:
If Not doc.isnewnote Then
If temppass = hidpass Then
doc.pass = "" Print "[http://localhost/Gliederung.nsf/Sender?OpenView]"
Else
continue=False Print "[http://localhost/Gliederung.nsf/PÖSEPÖSE.htm]"
End If
Wenn der Feldinhalt vom PASS Feld mit dem versteckelten Feldinhalt von HID übereinstimmt, wird das PASS Feld fürs nächste Editieren geleert (wäre ja sonst ziemlich...öhhhh..ääääähhh....dooof wenns stehenbleiben würde...) und die Ansicht mit den Docs aufgerufen. Wenn nicht, wird eine pöse.htm aufgerufen und das Speichern abgebrochen.
Die Formel im Feld HIST wird natürlich auch getriggered und zwar der Part:
{a:=@If( @IsNewDoc;texteingabe;
!@IsNewDoc & pass=hid;texteingabe;
hist);
@If(!@IsNewDoc & pass!=hid;
@SetField("texteingabe";"");void);
a}
1. wenn es kein neues Doc ist und Pass = Hid ist, übernimmt "HIST" den neuen Inhalt von "Texteingabe". Wenn nicht, bleibt HIST gleich.
2. zusätzlich, wenn pass <> hid ist, wird das Feld "Texteingabe" geleert....was im nachhinein eigentlich net nötig ist, da das Doc ja eh nicht gespeichert wird....doch..normalerweise sollte ich das gleiche Doc erneut aufrufen....na ja, egal...
Yep, das wars, was Du wolltest.
Ach soo..in die Maske in HTML HEAD komt folgende Formel rein, um das Caching auszuschalten, was beim Testen ja Sinn macht (sonst siehste net die Ergebnisse/Änderungen gleich..mußt dann manuell Refresh machen...wollen wir doch vermeiden)
"<META HTTP-EQUIV=\"expires\" content=\"Saturday, 31-Dec-89 06:30:00 GMT\"><META HTTP-EQUIV=\"Pragma\" CONTENT=\"no_cache\">"
-
@Rob_Green
Guten Morgen und vielen Dank für Dein Wunderwerk.
Ich bin jetzt am Arbeitsplatz und habe mir Dein Werk gerade ausgedruckt. Nun werde ich mich an die Geschiche ran machen und hoffe, daß ich das alles verstehen werde!
Gruß und ich melde mich
-
hab dir was zugemailed...kannste als Vorlage nehmen...Maske Sender2 ignorieren, ist für was anderes gedacht.
Halt nur Ansicht Sender, Maske Sender (incl. Code im Webquerysave) und Agent "(empty)"
Schaus Dir gleich mal im Browser an, ob Du schlau wirst draus.
Ach ja, gibt es nicht irgendwo Webspace für Domino kostenlos zum Testen???
-
Hi,
zu1= Danke für die Mail, aber nun bin ich ja net @home
Frage: hast du sie jetzt noch griffbereit, könntest du sie vielleicht jetzt an meine Firmenadresse schicken?
zu2= Ja gibt es
http://www.corefusion.net = 5MB free
http://www.free.dominoserver.de = 10MB free
Gruss
-
danke,
und die Firmenadresse...mail mich mal an oder warte, was soll der der Kram, ich poste den Link hier....: http://www.basic-t.com/upload/Gliederung1.zip
-
@Rob_Green
Danke
-
hehehe...du schuldest mir ein
(http://www.franziskaner-weissbier.de/0_start/images/news_longneck.jpg)
*prost*
-
@Rob Green
eine ganz tolle Geschichte die Du da erstellt hast.
Ein Schutz für die Dokumente, wenn man die Absicht hat meine Arbeit im zu löschen!
Das ist zum bearbeiten eine sehr geile Idee, Danke.
Ich bin schon am überlegen, wie ich die ganze Geschichte so ummodeln kann, das selbst beim erstellen, schon ein Passwort gefragt wird!
Vielleicht hast ja Du auch zu diesem Thema wieder eine Antwort parat.
Ein Lob ein Deine Formeln und dem Agent.
Für Einsteiger wie mich, sehr gut zuverstehen!
Lob und Danke
-
hm..beim Erstellen des Dokumentes wird doch ein Passwort "abgefragt"...also zum Eintragen halt. Aber das ist dann, wenn das Doc bzw. der HTML COde bereits generiert ist. Klar, man kann auch momentan nix ins Passwortfeld was eintragen, das habe ich n.n. abgefangen.
Oder wie meinst Du das?
Evtl., daß vor Erstellung die Berechtigung abgefragt wird, überhaupt etwas erstellen zu dürfen? Na, dann greifst Du entweder auf echte Loginverfahren mit Registrierung zurück oder aber jeder User muß sich einmalig in einer Art Profiledoc mit Username und Password verewigen. Vor Erstellung - also hier triggert der WebQueryOpen los - wird über view.getdocbykey der User nach dem Username und Passwort gefragt.
Wird aber nicht wie eine Session gehandhabt, so daß der nachteil wäre, daß jedesmal der User sich berechtigen muß, wenn er was erstellen will. Dafür würde ich halt ein Cookie nehmen, aber Cookie...na ja...
-
???@Rob_Green
ich meine, dass nicht jeder berechtigt ist ein Dokument zu erstellen! Ein Button "Create New Document" dann ein Page oder eine Form oder ein PopUp, wo er sich authentifizieren muss. ZB mit Anonymouse und einem Passwort! Verstehst Du? Dann habe ich genau das, was ich seit Tagen versuche und suche ???
Der einzelne Schutz der Docs ist genial!!!!! Kein Frage, aber ergänzend dazu > ein Gesamtschutz zum Create!
Gruss
-
und genau darum geht es mir
"ich meine, dass nicht jeder berechtigt ist ein Dokument zu erstellen"
Wenn das so sein soll, wer kontrolliert denn, wer darf und wer nicht? Wenn das jemand kontrollieren soll, kannste auch gleich die Editoren/Authoren in eine Group auf dem NAB hauen und das wars.
Deine Aussage ist in sich widersprüchlich, wenn Du dann wieder von "anonymous" ausgehst. Das passt einfach nicht.
Beschreib bitte in kurzen Worten, wie Du Dir die Applikation vorstellst.
-kommen alle Internetsurfer auf die DB
-wer soll erstellen dürfen
-wer nicht
-ist das eine Intranet oder Internet oder Extranet Appl.
etc
-
Gleich heule ich ganz laut :'(
ich bin doch nicht auf dem Holzweg!
Alle die über den Webbrowser auf die Homepage.nsf beitreten, sind doch Anonymouse ;)
Also dürfen erstmal alle, also auch ich, auf meiner Hompage Documente erstellen. Nun kann man das bearbeiten mit deiner Maske einschränken.
Jetzt obacht ::)
Wenn Meyer, Müller und Schulze auf "CREATE" klicken, dann soll eine zB InputBox hoch kommen, welche dann denn eingegebenen Text mit einem vorgegebenen Text vergleicht! Nur Müller, dem ich zuvor telefonisch den Text (also das richtige Passwort) mitgeteilt habe, wird erfolgreich sein. Schultze und Meyer werden gelinkt auf "your are the loser"
Mit Formeln und dem Notes ist das kein Problem und klappt aus dem Event Queryopen wunderbar! Das bringt mich aber nicht im Web weiter!
Ich hoffe du verstehst mich.
Gruß
-
dann möchte ich Dir gerne mal ne Funktionalitöät in Domino zeigen, die das exakt macht: Authorenfelder!
1. Du mußt dafür Sorge tragen, daß die USer mit prinzipiellen Schreibrechten in einer Gruppe im System Namens Adressbuch eingetragen werden. nenn die Gruppe halt Autoren. Da Du ja eh irgendwie die User in Deinem Modell "informieren" möchtest, kannst Du das zunächst über einen Usereintrag vorbereiten und dann anders gestalten...gemach...kommt gleich....jaa, pro Dokument sogar
2. Nunmehr trägst Du diese Gruppe in die ACL Deiner .nsf ein und gibst Ihr das Autorenrecht.
Und Default = NoAccess
Und Anonymous = Leser
3. Jetzt erstelle eine Form die ein Feld namen "Zugriffsberechtigte" hat und vom Typ Author & Multivalue ist.
4. Nun schreibst Du ein Dokument und trägst ins Autorenfeld "Maier" ein (daß Du selbst nicht als Autor dort genannt wirst, ist net schlimm...denn ab Editor kanns Du jedes Doc bearbeiten idR)
5. Wenn Maier nun als Surfer auf das Doc kommt und es ändern möchte, wird er erst jetzt vom System nach seiner Login gefragt (da in ACL Default = noaccess und Anonymous = Leser) ...das trägt er in die Loginbox ein und wenn der Eintrag mit dem Eintrag im Authorenfeld übereinstimmt, darf er das Doc editieren und speichern.
Das ist die Funktion der Authorenfelder.
Wenn Du natürlich jetzt sagst "ich ruf lieber an und geb den Leuten das Password" ok...auch ein Weg.
Wenn Du das, was über das Autorenfeld wunderbar systemgesteuert läuft, nicht machen möchtest, sondern eine handgestrickte Lösung mit Login Abfrage am Anfang, habe ich Dir bereits alles in die Hand gegeben.
Dann passiert das Gewünschte im WebQueryOpen und nicht WebQuerySave....grübel mal ruhig, der Code liegt bereits in Deiner Hand wie gesagt.
-
Hi,
um das leidige Thema nun bald abzuschließen!
Hast du einen der Links schon ausprobiert?
Wenn ja, denn wirst du merken, dass du keinerlei administrativer Rechte auf dem Server hast!
Das hatte ich auch schon geposted.
Du hast aber recht, der Cose liegt bei mir und muss eingarbeitet werden und daran mache ich mich jetzt ran.
Trotzdem danke ich sehr, denn du hast mich auf den Weg geführt ;D und mir sehr geholfen ;)
Gruss
-
hm..keine administrativen Rechte....Links....??? *kratz*
ahaa...langsam geht mir ein Licht auf.....Du willst die dort auf diesen Sites hosten....und ...klick...
jo, ok, dann wie gesagt über WebQueryOpen...
1. mach für jeden User ein Doc auf, das er selbst erstellt
2. wenn er ein Doc erstellen möchte, checked das Sys ob das User-Doc vorhanden ist (username und password für Searchkey der Methode getdocumentbeykey)..wenn nicht..Aufforderung zur Registrierung...wenn ja...darf er Doc erstellen und dort kann er ein beliebiges Passwort einstellen (halt nur nicht sein registriertes Password..sonst ist dat nix mit "rüberrufen")
3. wenn er ein Doc editieren will,...das haben wir ja jetzt
-
8)Hat es gefunkt, lieber @Rob_Green
Richtig, gehostet wird auf einem der Anbieter.
Die Geschichte ist kostenlos und 10MB sollte reichen.
Gruß
-
Sparbrötchen...du Kannst Dir noch net mal nen pimfligen Domino (am besten Enterprise Server) leisten und ne 4*156 Gbit Standleitung??? aiaiaiaia..... ;D
nix für ungut, wenns fertig bist, post mal, was bei rumgekommen ist.