|
Comment inclure un site existant dans SPS :
BRUNO nous écrit :
J'ai eu
le même problème que vous et pour le résoudre j'ai transformé toutes les listes de documents en formulaire. Ce formulaire contient
un champ caché qui recevra l'url du document sur lequel on clique. Cette url
est initialisée par script sur l'événement onclick qui en plus devra soumettre le formulaire. La propriété action de ce
formulaire pointe sur un tableau de bord qui contiendra un WebPart VBScript qui récupérera la valeur du champ caché (l'url du document) et générera un IFRAME
avec ce document. Si vous vous êtes familiarisés (casser les dents !) avec SPS et que vous maîtrisez HTML, vous devriez vous en sortir. Je reste à votre disposition.
Comment faire :
Pas de problème :
1) dans les feuilles XSL qui affichent des listes de documents
(résultat de la recherche, liste des documents d'une catégorie, ...), j'effectue les modifications pour obtenir un résultat dont un extrait se trouve dans le fichier joint
document1.txt
2) j'ai une webpart qui récupère la valeur de mes champs cachés (dans mon exemple, dans un tableau de bord Result, cf propriété "action" du formulaire). Ce webpart est un webpart VB dont le
script se trouve dans le fichier joint document2.txt.
Remarques :
Ce système fonctionne très bien pour l'affichage de documents HTML, je n'ai pas encore eu le temps de tester avec des fichiers Word ou Acrobat. Je suis assez optimiste dans
la mesure où ces fichiers savent s'afficher dans un Frame.
J'utilise aussi ce système pour des URL vers des DLL ISAPI applicatives que nous développons. Ainsi je réalise un "portail applicatif"
Par défaut, un Iframe ne se redimensionne pas par rapport à son contenu, d'où la fonction "HauteurIFrame" dans document2.txt. Cette fonction marche bien avec IE6 mais pas
avec IE5 dont l'IFrame ne réagit pas à l'événement "onload". Le TechNet propose une solution pour IE5 mais elle ne marche pas !
Autre astuce que j'utilise dans Sharepoint : je souhaitais trié l'ordre d'affichage des catégories, l'ordre alphabétique ne satisfaisant pas mes utilisateurs. Pour réaliser ceci, j'ai
simplement utilisé le champ "ContactName", inutile pour moi par ailleurs, pour stocker le numéro d'ordre. Ensuite, il faut encore faire les modifs dans les scripts et les XSL pour obtenir le résultat attendu. Je profite de l'occasion
pour faire remonter le besoin dans l'espoir de voir un champ prévu à cet effet dans la version 2.
Je reste à votre disposition pour plus d'explications.
Cordialement Bruno
Chef de projet, MATMUT
Forestier.bruno@matmut.fr
La solution script :
<script language="Javascript">
function afficheDocument(varForm, urlDocument, titreDocument)
{
varForm.urlDocument.value = urlDocument;
varForm.titreDocument.value = titreDocument;
varForm.submit();
}
</script>
<FORM name="formListeWPQ3" method="post" action="http://serveur/workspace/Portal/Result">
<INPUT type="hidden" name="urlDocument" value="" />
<INPUT type="hidden" name="titreDocument" value="" />
<TABLE width="100%" cellspacing="0">
<TR>
<TD valign="top" width="16" align="center">
<IMG border="0" src="DocTypeIcons/htm16.gif" />
</TD>
<TD valign="top" align="left" width="150">
<A href="javascript:afficheDocument(document.formListeWPQ3, 'http://serveur/workspace/Documents/document.htm', 'Titre du document');" id="document.htm"><B>Document HTML</B></A>
</TD>
<TD align="left" valign="top" width="100">
<B>30/09/2002</B>
</TD>
<TD align="left" valign="top">
Description du document
</TD>
</TR>
</TABLE>
</FORM>
------------------------------------------------------------------
Function GetContent(nod)
On Error Resume Next
GetContent = " "
Dim strOutput, strUrl, strTitre
strUrl = ReadParameterFromGetOrPost("urlDocument")
If Err.Number <> 0 Then SaveCurrentErrorContext "GetContent() - Error getting the urlDocument parameter." : Exit Function
If strUrl="" Then
nod.SelectSingleNode("IsIncluded").Text = "0"
Exit Function
End If
strTitre = ReadParameterFromGetOrPost("titreDocument")
If Err.Number <> 0 Then SaveCurrentErrorContext "GetContent() - Error getting the titreDocument parameter." : Exit Function
If strTitre <> "" Then
nod.SelectSingleNode("Title").Text = strTitre
nod.SelectSingleNode("HasFrame").Text = "1"
Else
nod.SelectSingleNode("HasFrame").Text = "0"
End If
strOutput = "<script language=""javascript"">" & vbCRLF & _
" function HauteurIFrame(nomIFrame)" & vbCRLF & _
" {" & vbCRLF & _
" var oFrm = document.getElementById(nomIFrame);" & vbCRLF & _
" var oBody = document.frames(nomIFrame).document.body;" & vbCRLF & _
" oFrm.style.height = oBody.scrollHeight + (oBody.offsetHeight - oBody.clientHeight);" & vbCRLF & _
" document.body.scrollTop = 0;" & vbCRLF & _
" }" & vbCRLF & _
"</script>" & vbCRLF & _
"<iframe onload=""HauteurIFrame('IFrameWebPart_WPQ_');"" name=""IFrameWebPart_WPQ_"" id=""IFrameWebPart_WPQ_"" frameborder=""0"" width=""100%""" & _
" ddf_src=""" & strUrl & """ src=""" & strUrl & """>"
GetContent = strOutput
End Function ------------------------------------------------
Le problème de départ :
J'ai un problème avec SharePoint , mon but c'est de
récupérer l'intranet d'un serveur existant et le mettre sous un serveur SharePoint, tout en gardant "le bandeau de haut de la page", celui ci marche pour la page d'accueil mais une fois que l'on a cliqué sur un lien le bandeau disparaît.
Est ce qu'il y a un moyen de le garder tout au long de l'enchaînement des écrans du site ?
----------------------------------------------
EROL / MiniTrucs 2 :
21-févr.-2004 19:05:18 +0100 |