Autor Thema: Web: Zugriff auf gewählte Dokumente  (Gelesen 1147 mal)

Glombi

  • Gast
Web: Zugriff auf gewählte Dokumente
« am: 12.11.03 - 23:32:15 »
Hi @all:
ich hätte da gerne nen Problem:
In den Ansichtseigenschaften kann ich einstellen "Für Web-Zugriff: Dokumentauswahl zulassen".
Wenn man dann die Ansicht im Web öffnet, wird vor jedem Eintrag ein Kontrollkästchen angezeigt, welches man anhaken kann.
Wie kann ich dann per Programmierung (wenn ich bspw. einen Agenten über eine Aktion aufrufe) feststellen, welche Einträge gewählt wurden?

Evtl. geht es ja auch anders und einer hat ne Idee:
Ich möchte für alle gewählten Dokumente in einer View per Aktion ein Feld setzen. Genauer gesagt, sollen Bewertungen "Erfüllt", "Teilweise erfüllt" und "Nicht erfüllt" gesetzt werden. Dazu würde ich dann 3 Aktionen erstellen.

Bin für jede Anregung dankbar!!!

Andreas
« Letzte Änderung: 12.11.03 - 23:32:33 von Glombi »

Axel Janssen temp

  • Gast
Re:Web: Zugriff auf gewählte Dokumente
« Antwort #1 am: 13.11.03 - 08:39:55 »
Ohne jetzt Zeit zu haben, dass durchzutesten.

Vorschlag:
Schaue dir im Browserquelltext der Ansicht an, wie die Checkbox-Felder hinsichtlich ihrer Parameter genau aussehen. Ich tippe das sieht ungefähr so aus:

<input type="checkBox name="immerDerGleicheName">

Du kannst sie dann per JavaScript auslesen.

Gruß Axel

Glombi

  • Gast
Re:Web: Zugriff auf gewählte Dokumente
« Antwort #2 am: 13.11.03 - 10:00:47 »
Hi Axel,
in der Tat:
<TR VALIGN=top><TD><IMG ALIGN=top NAME="_SelectImg3A99A55B07D2EF70C1256DDD00304219" SRC="/icons/ecblank.gif" BORDER=0 HEIGHT=16 WIDTH=16 ALT=""></TD><TD>
<INPUT TYPE=checkbox NAME="$$SelectDoc" VALUE="3A99A55B07D2EF70C1256DDD00304219"></TD><TD NOWRAP><IMG SRC="/icons/ecblank.gif" BORDER=0 HEIGHT=1 WIDTH=16 ALT=""><A HREF="/TestIt.nsf/a7392ba1e08f60cbc1256ddd00303902/3a99a55b07d2ef70c1256ddd00304219?OpenDocument">Frage 1</A></TD></TR>

<TR VALIGN=top><TD><IMG ALIGN=top NAME="_SelectImgBC60F60A0B1099C5C1256DDD003043B8" SRC="/icons/ecblank.gif" BORDER=0 HEIGHT=16 WIDTH=16 ALT=""></TD><TD>
<INPUT TYPE=checkbox NAME="$$SelectDoc" VALUE="BC60F60A0B1099C5C1256DDD003043B8"></TD><TD NOWRAP><IMG SRC="/icons/ecblank.gif" BORDER=0 HEIGHT=1 WIDTH=16 ALT=""><A HREF="/TestIt.nsf/a7392ba1e08f60cbc1256ddd00303902/bc60f60a0b1099c5c1256ddd003043b8?OpenDocument">Frage 2</A></TD></TR>

Es gibt auch noch sowas im Quelltext:
<SCRIPT LANGUAGE="JavaScript">
<!--
function _SelectMarkForDelete(){
  var form = document._SelectFormName;
  for (var i = 0; i < form.elements.length; i++) {
    if (form.elements.type == "checkbox") {
      if (form.elements.name == "$$SelectDoc") {
        if (form.elements.checked) {
          var theImg = eval("document._SelectImg" + form.elements.value);
          if (theImg.src.indexOf("httrash.gif") != -1)
            theImg.src = "/icons/ecblank.gif";
          else
            theImg.src = "/icons/httrash.gif";
          form.elements.checked = false;
        }
      }
    }
  }
}

function _SelectDelete(){
  var form = document._SelectFormName;
  for (var i = 0; i < form.elements.length; i++) {
    if (form.elements.type == "checkbox") {
      if (form.elements.name == "$$SelectDoc") {
        var theImg = eval("document._SelectImg" + form.elements.value);
        if (theImg == null)
          continue;
        if (theImg.src.indexOf("httrash.gif") != -1) {
          form.elements.checked = true;
          theImg.src = "/icons/ecblank.gif";
         }
         else {
          form.elements.checked = false;
         }
      }
    }
  }
}

function _SelectAllDocs(select){
  var form = document._SelectFormName;
  for (var i = 0; i < form.elements.length; i++) {
    if (form.elements.type == "checkbox") {
      if (form.elements.name == "$$SelectDoc") {
        form.elements.checked = select;
      }
    }
  }
}


Ich glaube, zur Zeit habe ich ein Brett vorm Kopp. Wie kann ich denn mit JavaScript Werte in ein Felder für die gewählten Dokumente schreiben?

Andreas

Glombi

  • Gast
Re:Web: Zugriff auf gewählte Dokumente
« Antwort #3 am: 13.11.03 - 10:51:06 »
Ok, ich hab's denke ich.

Für alle die es interessiert: Ich habe mich an der Aktion "Add Sender To Address Book" im R5 Mail orientiert.

Und dabei noch einen Bug festgestellt.
Originalformel:

if (window.location.host=="127.0.0.1:89") {
alert("This action is not available while using Domino Off-Line services..");
}
else {
var pathname = window.location.pathname;
var path = pathname.substring(0,(pathname.lastIndexOf('.nsf')+5));
var url = path + 'wAddressSave?OpenAgent&UNIDs=';
var docs = getSelectedDocs();
if (docs.length != 0)  {
for (var i = 0; i < docs.length; i++) {
   url += '%%' + docs;
   }
url += "&Return="+pathname + window.location.search;
window.location.replace(url)
}
else {
alert("You must select one or more documents first.");
}
}

Korrekt muss es aber heißen:
if (window.location.host=="127.0.0.1:89") {
alert("This action is not available while using Domino Off-Line services..");
}
else {
var pathname = window.location.pathname;
var path = pathname.substring(0,(pathname.lastIndexOf('.nsf')+5));
var url = path + 'wAddressSave?OpenAgent&UNIDs=';
var docs = getSelectedDocs();
if (docs.length != 0)  {
for (var i = 0; i < docs.length; i++) {
   url += '%%' + docs;
   }
url += "%%&Return="+pathname + window.location.search;
window.location.replace(url)
}
else {
alert("You must select one or more documents first.");
}
}


Im aufgerufenden Agenten kann man dann wie folgt die UNIDs extrahieren und dann so an die Dokumente kommen:
Sub Initialize
   Dim session As NotesSession
   Dim docCtxt As NotesDocument
   
   Dim query_string As String
   Dim strUNIDS As String
   
   Dim strUNID As String
   Dim strNameParseFormula As String
   
   Set session = New notessession
   Set docCtxt = session.DocumentContext
   
   query_string = docCtxt.getitemvalue("Query_String")(0)
   
   If Instr(query_string, "&UNIDs=%%") Then            
      
      strUNIDS = Strright( query_string, "&UNIDs=%%")
      strUNIDS = Strleft( strUNIDS, "&Return=")
      strUNID = Strleft(strUNIDS, "%%")
      While Not(strUNID = "")
         strUNIDS = Strright(strUNIDS, "%%")
         
      'Hier dann Call ProcessDoc( strUNID )
         
         strUNID = Strleft(strUNIDS, "%%")
      Wend
      
   Else
      'Ausnahmebehandlung: Keine Doc-IDs vorhanden
      
   End If
End Sub


Wie man sieht, ist der Bugfix notwendig, denn sonst wird wegen
strUNID = Strleft(strUNIDS, "%%")
die letzte UNID nicht mehr gefunden, da ja im Originalcode
url += "&Return
verwendet wurde, d.h. hinter der letzten UNID fehlt %% und so findet er nix mehr.


Andreas
« Letzte Änderung: 13.11.03 - 10:53:21 von Glombi »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz