2009-08-20 3 views
2

Ich möchte, dass SharePoint sich wie gewohnt verhält, aber bevor ich Dokumente an Benutzer zurücksende, würde ich gerne die Option haben, das Dokument abzufangen und benutzerspezifische Ergänzungen/Änderungen vorzunehmen.SharePoint: Ist es möglich, Dokumente abzufangen/zu modifizieren, bevor sie an den Client zurückgegeben werden?

Also im Grunde: 1) Können Sie den Code für "Öffnen" von Dateien in SharePoint sogar zwicken? 2. Wenn ja, können Sie dies auf einer benutzerspezifischen Basis tun (z. B. den Standardcode für alle außer einer bestimmten Klasse von Benutzern verwenden) 3) Unter der Annahme 1 und 2 können Sie abfangen, welche Datei zurückgegeben und erstellt wurde Änderungen daran (vielleicht sogar durch eine andere Datei insgesamt ersetzen)?

(ich würde es vorziehen, das nicht auf der IIS-Ebene zu tun)

Danke, Rhett

+0

Was ist Ihr Anwendungsfall hier? Was versuchst du zu erreichen? Kannst du ein paar Beispiele geben? –

+0

Ein Beispiel wäre eine Wasserzeichenmarkierung mit einem benutzerspezifischen Token (z. B. Benutzername oder E-Mail-Adresse). – Rhett

Antwort

0

Was meinen Sie mit "Datei öffnen"? Ein Listenelement anzeigen oder das Dokument selbst öffnen?

In beiden Fällen können Sie Listenformulare mit SharePoint Designer bearbeiten. Oder Sie können Ihren Code-Behind für diese Liste erstellen und alles mit OnLoad-Ereignis oder etwas Javascript-Zeug mit dem Herunterladen von Anhang-Links tun.

Oder in Ihrem Fall, wenn Sie Ihr Dokument mit Wasserzeichen versehen möchten, könnten Sie Code-Behind (practical example here) erstellen, das OnLoad-Ereignis überschreiben (beim Öffnen des Formulars), auf diese Dokumente zugreifen und Ihre Parameter festlegen.

Und OnUnload können Sie dann erneut Dokument ändern, um Änderungen rückgängig zu machen.

Was ist, wenn mehrere Benutzer auf dasselbe Dokument zugreifen möchten? Nun, dann könnten Sie das Originaldokument mit Javascript verstecken und eine Kopie anzeigen, die für diesen Benutzer vorbereitet ist und auf OnUnload es verwerfen.

Es funktioniert jedoch nur, wenn Sie auf Dokumente aus dem Web zugreifen, nicht Outlook.

+0

Wenn Sie sich die Benutzeroberfläche ansehen, gibt es zwei Möglichkeiten, ein Dokument zu öffnen. Klicken Sie entweder auf den Link für das Dokument (z. B. http: //sharepoint/directory/document.doc) oder klicken Sie auf den Menüeintrag "Bearbeiten in ...". Unter der Haube, was passiert, wenn Sie auf den Link (wie oben) oder auf den Menüpunkt "Bearbeiten in ..." klicken? – Rhett

+0

Ahh, ich habe meinen falschen Kommentar gelöscht. Ausgecheckte Funktionsaufrufstruktur, was passiert, wenn Sie auf den Listenelementtitel klicken. Siehe Screenshot: http://img268.imageshack.us/img268/7448/ss20090821091459.png Wenn Sie "Edit in ..." drücken, wird "STSNavigateWithCheckoutAlert" von core.js aufgerufen. –

1

Ich denke, was Sie hier tun müssen, ist ein HttpHandler für die Dokumente (z. B. Word-Dateien - doc/docx) zu erstellen. Hier ist eine link, die helfen könnte. Außerdem gibt this Link Details zum Erstellen von HttpHandlers. Wahrscheinlich müssen Sie der web.config-Datei für Ihre Site Folgendes hinzufügen:

Ich bin nicht sicher, wie Sie Ihren Handler anhängen, um mit Ihren Dokumenten umzugehen, da ich nicht weiß, welche Dateierweiterungen vorhanden sind. aber du hast die Idee.

+0

Das war mein erster Gedanke, aber ich ' Ich möchte es auf SharePoint-Ebene mit anwendungsbewusstem Code tun - ich möchte nicht zu IIS wechseln. – Rhett

0

Erstellen Sie ein Feature, das der Bibliothek einen SPItemEventReceiver hinzufügt und ItemUploded überschreibt. Oder verwenden Sie diese tool, um Ereignisse zur Bibliothek hinzuzufügen.

+0

Das Dokument muss bei geöffnetem und unterschiedlichem Benutzer geändert werden. Also glaube nicht, dass das funktionieren kann. –

0

Wäre es möglich, eine benutzerdefinierte Seite zu verwenden, das Dokument zu laden und zu verarbeiten, bevor Sie es an den Client senden?

So dass die Frage würde mir eher wie "wie alle relevanten Links zeigen auf diese Umleitungsseite statt direkt auf das Dokument?"

Was natürlich kann unmöglich sein, vor allem im Fall von

0

mit Dokumenten über WebDAV Arbeitshttphandler ist der einzige Ort in dem IIS/Asp.Net/Sharepoint-Stack, wo Sie die Möglichkeit, Dokumente zu ändern, werden an den Benutzer gesendet. Da dies außerhalb von SharePoint ist, ist es nicht wirklich, wenn Sie in Betracht ziehen, dass HTTPHandler ein Teil von Asp.Net sind und SharePoint eine Asp.Net-Anwendung ist.

Wenn Sie wirklich möchten, können Sie Ihren Code auch als SharePoint-Lösung verpacken und bereitstellen und sogar die Aktivierung des Features automatisch aktivieren, um Ihren Handler zu aktivieren.

Verwandte Themen