Domino 9 und frühere Versionen > ND6: Entwicklung
Anwender können Dokument nicht abspeichern, sondern erzeugen ein Konfliktdokumen
DAU-in:
ich habe folgendes Problem:
in einer Webanwendung werden die Attachments in Extradokumenten gespeichert. Auf diese Dokumente gibt es einen Link, es öffnet sich ein neues Fenster und dort gibt es Links: Öffnen des Attachments und attachment delete.
Durch Attachment delete wird ein Agent angestossen, der das Dokument labelt für den nächtlichen Löschagenten, und ein feld umsetzen soll, so dass das Attachmentdokument nicht mehr im Hauptdokument angezeigt wird.
Mein Problem: ich selbst kann die Aktion noch ausführen, ich habe Managerrechte auf der Datenbank. Beim ordinären Anwender wird allerdings immer ein Konfliktdokument erstellt, und das Hauptdokument wird nicht verändert, das heisst es wird auch weiterhin unverändert angezeigt. Die Anwender haben alle Editorenrechte + die Rolle ihrer zugehörigen Abteilung. Für das Setzen des Löschlabels sind keine Rollen erforderlich. Auf der Maske für die Attachments sind keine Autorenfelder vorhanden, und wenn, sollten sie keine Auswirkung haben, da ja eh alle Editoren sind. Es ist 'merge conflicts' in der Maske für Behandlung von Konflikten angegeben.
Mir ist absolut unklar, wodurch die Konfliktdokumente erzeugt werden.
Da diese bei mir nicht auftreten, muss es ja in irgendeiner Form mit den Zugriffsrechten zu tun haben.
Wo kann ich noch suchen? :-:
koehlerbv:
Xanthi, jetzt bräuchten wir Code. Irgendwas läuft schief, aber was ... Das ist bisher schwer zu sagen.
Bernhard
DAU-in:
Bernhard, ich habe gerade Verstopfung, aber ich stelle den Code dann morgen früh rein.
Ich suche heute abend dann erstmal im Wein nach der Erleuchtung.
pete_bla:
Hi,
muss ich auchnoch etwas Senf dazu geben....
An "Autorenrechten" kann es eigentlich nicht liegen, da du sagst, dass alle Anwender Editor sind, und die nicht für >=Editoren gelten.
ABER: die ACL könnte so eingestellt sein, dass Maximaler-Internetzugriff "Autor" ist, dann müsste es aber auch bei Dir knallen, ausser Du hast wieder eine Autorenrolle.
Und die Geschrichte mit "Konflikte Mischen" ist ja erstmal nur für Replikations-Konflikte...
Ich würde so ins blauer mal auf irgend einen "doppelten-Save" tippen!
Grüsse und lass Dirs munden!
- ich hoff Du bereust das Tröpfchen nicht am nächsten Tag,
Pete(r)
PS: hui hier tippts sichs viel leicher als mit dem VI ... bin wohl grad etwas ungelenk....
DAU-in:
Moin, moin!
Maximaler Internetzugriff ist auf¨'Editor' eingestellt.
Der Agent, der angestossen wird im WebQueryclose:
Sub Initialize
' Instantiate a new Log and open it
Set currentLog = New NotesLog( "ag_wqs_attachment" )
Call currentLog.OpenNotesLog( db.Server, db_log )
hilog "ag_wqs_attachment"
' dbg " hier "
If doc.ptAction(0)="SAVEANDEXIT" Then
Dim qry As String
Dim subqry As String
qry=doc.Query_string(0)' Returns the part beginning with '?OpenAgent'
subqry=Mid(qry,16) 'Returns the part after ?OpenAgent&
Dim oid As String
oid=Left(subqry, 32)
' dbg "oid: " & oid
Dim fn As String
fn=Mid(subqry, 33)
' dbg fn
doc.section=fn
' dbg " hinter section "
Dim var1 As Variant
var1 =(Evaluate(|@Attachmentnames|,doc))
Forall x In var1
dbg " x = " & x
End Forall
doc.attachmentfilename=Implode(Evaluate(|@Attachmentnames|,doc))
'doc.attachmentfilename=(Evaluate(|@Attachmentnames|,doc))
dbg " attachment " & doc.attachmentfilename(0)
doc.originalsDoc_id=oid
' dbg doc.originalsDoc_id(0)
doc.doc_id=doc.universalid
' dbg doc.doc_id(0)
Else
dbg " hier im löschen"
doc.workcopyowner="nemo"
dbg " doc.workcopyowner= nemo"
doc.originalsDoc_id="nemo"
doc.section="nemo"
End If
Call doc.save(False,False)
dbg "["+homeurl+"/fm_closewindow?OpenForm]"
Print "["+homeurl+"/fm_closewindow?OpenForm]"
byelog "ag_wqs_attachment"
End Sub
Auf der Maske selbst für Deletedoc:
<script language="JavaScript">
function saveAndExit(){
document.getElementById('ptaction').value='SAVEANDEXIT'
var fn=''(Feld);
var oldDiv=opener.document.getElementById('att_'+fn).innerHTML;
var appendVal="<img src='"+"(Feld)"+"'>"+"(FEld)"+"<br>";
opener.document.getElementById('att_'+fn).innerHTML=oldDiv+appendVal;
document.forms[0].submit();
//window.close();
}
;
function deleteDoc()
{
var fn=''(Feld);
var oldDiv=opener.document.getElementById('att_'+fn).innerHTML;
var appendVal="<img src='"+"Feld"+"'>"+"Feld"+"<br>";
opener.document.getElementById('att_'+fn).innerHTML=oldDiv+appendVal;
document.getElementById('ptaction').value='DELETE'
document.forms[0].submit();
//window.close();
}
</script>
Im Hauptdokument werden die Attachmentdokumente folgendermassen über ein FEld mit Durchgangs-HTML angezeigt.
REM {VARIABLEN};
_Klammer:=icon_def_link+"klammer.gif";
_fn:=@RightBack(@ThisName;4);
REM {BUTTON NEUE ATTACHMENTS};
_html:="<button onclick=\"newAttachment('"+_fn+"','"+OriginalsDoc_ID+"')\">New attachment</button>";
REM {LINKLISTE ZU VORHANDENEN ATTACHMENTS};
_html:=_html+"<div id='ATT_"+_fn+"'>";
_LinkListe:=@DbLookup("Notes":"NoCache";"";"Attachments";OriginalsDoc_ID+_fn;4);
_OrgIDListe:=@DbLookup("Notes":"NoCache";"";"Attachments";OriginalsDoc_ID+_fn;2);
_FNListe:=@DbLookup("Notes":"NoCache";"";"Attachments";OriginalsDoc_ID+_fn;3);
_IDListe:=@DbLookup("Notes":"NoCache";"";"Attachments";OriginalsDoc_ID+_fn;5);
@For(i:=1;i<=@Elements(_LinkListe);i:=i+1;
_tmpAttName:=@Subset(@Subset(_LinkListe;i);-1);
_tmpOID:=@Subset(@Subset(_OrgIDListe;i);-1);
_tmpFN:=@Subset(@Subset(_FNListe;i);-1);
_tmpID:=@Subset(@Subset(_IDListe;i);-1);
_link:=homelink+"/ag_eda?OpenAgent&"+_tmpID;
_html:=_html+"<a href='"+_link+"' target='_blank'><img src='"+_Klammer+"'>"+_tmpAttName+"</a><br>"
);
_html:=_html+"</div>";
REM {AUSGABE};
_html
DAs Call doc.save(flase,false9 hatte ich schon mal rausgenommen, aber mit demselben Ergebnis.
Wenn ich mich einlogge, werden die Felder umgesetzt, benutze ich einen der Testuser, entsteht ein Konfliktdokument.
èber dbg kann ich mir werte ausgeben lassen.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln