SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Infofenster beim Ändern von Listeneinträgen

Unbeantwortet Dieser Beitrag hat 10 Antworten

Ohne Rang
77 Beiträge
Stefan Dombrowski erstellt 13 März 2013 11:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Community,

ich habe die Aufgabe, folgendes zu realisieren. Wenn ein Listenelement geändert wird und ein Feld (z.B. "Status") den Wert "genehmigt" annimmt, sollen alle an der Domäne angemeldeten Benutzer ein Infofenster erhalten, in dem einige Felder des Listenelements angezeigt werden.

Es soll quasi eine Alert-Funktion für alle Mitarbeiter sein, wenn ein genehmigtes Ereignis aufgetreten ist. ich kann mir hier ein Script vorstellen (Javascript), das die Werte der Felder sammelt und in einer Messagebox ausgibt. Allerdings soll keine Infobox gezeigt werden, wenn der Status schon auf "genehmigt" stand.

Gibt es dafür was oder muss man einen Event Handler dafür schreiben? Leider bin ich mit VisualStudio nicht vertraut und nutze vorwiegend des SP Designer.

Oder kann ich aus einem Workflow heraus ein Script ausführen?

Danke vorab
Stefan

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 13 März 2013 14:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du kannst das Formular um JavaScript erweitern und dem Benutzer, der die Änderungen macht, einen Hinweis geben. An alle anderen Benutzer bzw. deren Desktops kommst Du nicht ran und schon gar nicht per JavaScript im Browser eines Clients.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
77 Beiträge
Stefan Dombrowski Als Antwort am 13 März 2013 15:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das habe ich auch schon hinbekommen, dass dort eine Meldung beim User erscheint.

Gibt es keine Möglichkeit, dass ich per Script die aktuellen Inhalte der Felder in eine Datei schreibe und den Inhalt der Datei dann per msg an alle an einem bestimmten Server in der Domäne (z.B. Fileserver) angemeldeten Benutzer schicke?

Ohne Rang
66 Beiträge
Sigi Weber Als Antwort am 13 März 2013 15:26
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die Frage ist wohl mehr mit welchem Tool du die Nachricht an die angemeldeten Benutzer pushen willst, denn da gibt es die verschiedensten Wege.

Z.B. kannst du mit entsprechender Programmierung einer Workflow Action eine Lync/Office Communicator Nachricht von Server aus absenden. Sowas geht auch per XMPP (aka Jabber) und Google Talk oder Skype (und früher auch Windows Live Messenger).

Eine andere, sehr simple, Möglichkeit wäre mit JavaScript den WSH (Windows Scripting Host) anzusteuern. Dort gibt es ein "WScript.Shell" Objekt über das du beliebige Programme starten kannst. Wenn du also bereits ein Tool im Einsatz hast um per Kommandozeile eine Nachricht an deine Benutzer zu senden, dann kannst du aus dem IE per JavaScript ein ActiveXObject instanzieren und dort WSH starten.

Ich persönlich bevorzuge die Möglichkeit per Lync/XMPP/etc. eine Nachricht zu pushen weil man da mehr Infos unterbringen kann und weil ich dadurch keine SharePoint Alert Emails mehr brauche (ok, dazu hat es etwas Custom Code benötigt ;-) 

Cheers,

Sigi Weber

Ohne Rang
77 Beiträge
Stefan Dombrowski Als Antwort am 13 März 2013 15:39
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Damit bin ich total überfordert. Wie gesagt, ich würde vielleicht noch hinbekommen, Felder auszulesen. Aber wie ich diese Informationen dann an alle User bekomme, weiß ich nicht.

Mein Administrator meinte, dass hierfür msg (früher net send) funktionieren müsste, da ich hiermit Nachrichten an alle an einem Server in der Domäne angemeldeten Benutzer pushen kann. Hier sollen dann die Informationen enthalten sein, die ich vorher aus den Feldern ausgelesen habe.

Ohne Rang
66 Beiträge
Sigi Weber Als Antwort am 13 März 2013 16:09
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ok. Hier ist ein Beispiel wie du mit JavaScript im Internet Explorer eine Nachricht per msg Kommando abschicken kannst:

var shellApp = new ActiveXObject("WScript.Shell");

shellApp.Run("%windir%\system32\msg.exe DerBenutzerName Hello World");

Anstatt "DerBenutzerName" kannst du auch einen Stern ("*") verwenden um es an alle zu schicken. Damit wäre ich allerdings, gerade beim testen, vorsichtig ;-)

"Hello World" ist die Zeichenkette die du versenden willst. Wie du da nun deine Infos reinbekommst kann ich dir leider so direkt aus dem Kopf nicht beantworten.

Hoffe trotzdem es gibt dir einen push in die richtige Richtung...

Cheers,

Sigi Weber

Ohne Rang
77 Beiträge
Stefan Dombrowski Als Antwort am 14 März 2013 09:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Vielen Dank bis hierher.

Ich muss hier wahrscheinlich Schritt für Schritt durchgeführt werden. Kann ich beispielsweise diese Nachricht abschicken, wenn auf den "Speichern"-Button eines Edit-Formulars geklickt wird?

Außerdem müsste ich vor dem Senden überprüfen (xsl?), ob 2 bestimmte Felder bestimmte Werte annehmen. Kann ich das über xsl realisieren? Und an welcher Stelle des Codes?

Danke vorab.

Ich probiere zwischendurch mal aus, überhaupt eine nachricht zu senden.

Ohne Rang
77 Beiträge
Stefan Dombrowski Als Antwort am 14 März 2013 10:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe jetzt folgende Zeile eingefügt, die bewirken soll, dass beim Betätigen von Button1 die Message auf meinen eigenen Bildschirm geschickt wird:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="javascript:var shellApp = new ActiveXObject(WScript.Shell);shellApp.Run(%windir%\system32\msg.exe dombrowski Hello World);" />

Ich weiß nicht, ob und wohin die Message geschickt wird, aber leider nicht zu mir auf den PC. Habe auch schon mit verschiedenen Servernamen experimentiert (/SERVER:Servername), aber auch das hat nicht geklappt. Will allerdings in dieser Phase nicht den * benutzen. "dombrowski" ist mein Domänen-Benutzername.

Ohne Rang
77 Beiträge
Stefan Dombrowski Als Antwort am 14 März 2013 11:35
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Kann ich als Alternative die Inhalte von Feldern in eine Textdatei schreiben und auf dem Fileserver ablegen? Dann würde ich anschließend die Textdatei auslesen und über msg.exe versenden.

Ohne Rang
66 Beiträge
Sigi Weber Als Antwort am 14 März 2013 18:03
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Sorry, konnte nicht früher antworten.

Fang doch mal klein an: nimm einen Texteditor deiner Wahl (ich bevorzuge den OpenSource Editor Notepad++) und erstelle eine Datei "msgtest.js". Darin schreibst du die Zeilen JavaScript die ich dir gepostet habe und speicherst die Datei auf deinem Computer. Danach rufst du die Datei einfach im Windows Explorer (nicht Windows Internet Explorer) per Doppelklick auf. Das sollte schon mal eine Testnachricht senden.

Wenn das geklappt hat kannst du dich an den nächsten Schritt wagen und mit client-seitigem JavaScript, wie Andi Fandrich schon geschrieben hat, versuchen die Felder aus dem SharePoint Element auszulesen und dann mit dem Aufruf der msg.exe zu kombinieren.

Soweit ich das gesehen habe erlaubt das Kommandozeilentool msg.exe nicht die Verwendung einer Datei als Input fuer den Text. Daher musst du dir einen String mit JavaScript zusammenbauen (eventuell auch mit Zeilenumbrüchen zur besseren Lesbarkeit) und diesen dann mit msg.exe abschicken.

Ich glaube das ebenfalls von Andi Fandrich erwähnte SPUtility Projekt auf codeplex.com ist da brauchbar, eventuell auch SPService (evenfalls auf CodePlex), allerdings hab ich mit beiden noch keine Erfahrungen gesammelt. Auf jeden Fall wirst du da eine ganze Menge Script schreiben bis es soweit ist, aber ohne server-seitigen Code ist das wie gesagt die einzige Lösung die ich mir vorstellen könnte.

Cheers,

Sigi Weber

Ohne Rang
77 Beiträge
Stefan Dombrowski Als Antwort am 15 März 2013 13:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich dank dir und Andi erst mal für die Unterstützung. Bevor ich mich ans Programmieren stürze, werde ich wohl mal versuchen, mit einem DataSynchronisationstool die SharePoint-Elemente in eine csv-Datei zu schreiben und dann die Inhalte mit einer Batch-Datei auslesen und mir dann die Zeichenfolgen zusammenbasteln, die ich dann per msg versende.

Mal sehen, ob ich damit weiterkomme.