2009-08-20 12 views
2

J'aimerais que SharePoint se comporte tel quel, mais avant de retourner les documents aux utilisateurs, j'aimerais pouvoir intercepter le document et apporter des modifications/ajouts spécifiques à l'utilisateur.SharePoint: est-il possible d'intercepter/modifier des documents avant qu'ils ne soient retournés au client?

Donc, fondamentalement: 1) Pouvez-vous même modifier le code responsable de l'ouverture de fichiers dans SharePoint? 2. Si oui, pouvez-vous le faire sur une base spécifique à l'utilisateur (par exemple utiliser le code par défaut pour tout le monde excepté une classe donnée d'utilisateurs) 3) En supposant 1 et 2, pouvez-vous intercepter quel fichier était sur le point d'être retourné? changements à lui (peut-être même le remplacer par un autre fichier tout à fait)?

(je préfère ne pas le faire au niveau IIS)

Merci, Rhett

+0

Quel est votre cas d'utilisation ici? Qu'est-ce que vous essayez d'accomplir? Peux-tu donner quelques exemples? –

+0

Un exemple serait un filigrane avec un jeton spécifique à l'utilisateur (par exemple, nom d'utilisateur ou adresse e-mail). – Rhett

Répondre

0

Que voulez-vous dire par "l'ouverture du fichier"? Afficher un élément de liste ou ouvrir le document lui-même? Dans les deux cas, vous pouvez modifier les formulaires de liste avec SharePoint Designer. Ou vous pouvez créer votre code-behind pour cette liste et faire n'importe quoi avec l'événement OnLoad ou certains trucs javascript avec le téléchargement des liens de la pièce jointe. Ou, dans votre cas, si vous souhaitez filigrane votre document, vous pouvez créer du code-behind (practical example here), remplacer l'événement OnLoad (lors de l'ouverture du formulaire), accéder à ces documents et définir vos paramètres.

Et OnUnload vous pouvez alors encore modifier le document pour annuler les modifications.

Et si plusieurs utilisateurs veulent accéder au même document? Eh bien, alors, vous pouvez effectivement cacher le document original avec javascript et afficher une copie qui est préparée pour cet utilisateur et sur OnUnload le rejeter.

Cependant, cela ne fonctionnera que si vous accédez à des documents à partir du Web, pas Outlook.

+0

Si vous regardez l'interface utilisateur, il existe deux façons d'ouvrir un document. Cliquez sur le lien du document (par exemple http: //sharepoint/directory/document.doc) ou cliquez sur l'élément de menu "Modifier dans ...". Sous le capot, que se passe-t-il lorsque vous cliquez sur le lien (comme celui ci-dessus) ou sur l'élément de menu "Modifier dans ..."? – Rhett

+0

Ahh, j'ai supprimé mon mauvais commentaire. Vérifié arbre d'appel de fonction ce qui se passe lorsque vous cliquez sur le titre de l'élément de la liste. Voir la capture d'écran: http://img268.imageshack.us/img268/7448/ss20090821091459.png Si vous appuyez sur "Modifier dans ..." il appelle "STSNavigateWithCheckoutAlert" de core.js –

1

Je pense que ce que vous devez faire ici est de créer un HttpHandler pour les documents (par exemple, des fichiers Word - doc/docx). Voici un link qui pourrait aider. En outre, le lien this fournit des détails sur la façon de créer HttpHandlers. Vous avez probablement besoin d'ajouter ce qui suit au fichier web.config pour votre site:

Je ne sais pas trop comment connecter votre gestionnaire pour traiter vos documents, car je ne connais pas les extensions de fichier, mais vous avez l'idée.

+0

C'était ma première pensée, mais je ' J'aime le faire au niveau SharePoint avec du code compatible avec les applications - je ne veux pas sauter sur IIS. – Rhett

0

Créez une fonction qui ajoute un SPItemEventReceiver à la bibliothèque et remplace ItemUploded. Ou utilisez cette tool pour ajouter des événements à la bibliothèque.

+0

Le document doit être modifié sur ouvert et différent par utilisateur. Donc, ne pense pas que cela puisse fonctionner. –

0

Serait-il possible d'utiliser une page personnalisée, de charger le document et de le traiter avant de l'envoyer au client?

Alors que la question me dirait plus comme "comment faire tous les liens pertinents pointent vers cette page de redirection au lieu de directement au document?"

Ce qui bien sûr peut-être impossible, notamment en cas de travail avec des documents via WebDAV

0

HTTPHandler est le seul endroit dans la pile IIS/Asp.Net/SharePoint où vous avez la possibilité de modifier des documents qui sont envoyé à l'utilisateur. En dehors de SharePoint, ce n'est pas vraiment quand vous considérez que HTTPHandlers fait partie d'Asp.Net et que SharePoint est une application Asp.Net.

Si vous le souhaitiez vraiment, vous pouviez toujours empaqueter et déployer votre code en tant que solution SharePoint et même faire en sorte que l'activation de la fonction change automatiquement le fichier web.config pour activer votre gestionnaire.

Questions connexes