Vous êtes ici Forums
  |  Connexion
 Forums
HomeHomeProjetsProjetsStore : utilisa...Store : utilisa...Impossible dImpossible d'ajouter une image (Lors de la création d'un produit)
Précédente
 
Suivante
Nouveau message
01/04/2007 17:23
 
Lors de la création d'un produit, le boutton "Charger un fichier est absent".
De plus, il faudrait ajouter le filtre d'extensions suivant : "bmp, png, jpg, jpeg, gif".

EditProducts.ascx :
Ligne ~180
 <portal:URL id="image1" runat="server" width="300" showtabs="False" showfiles="True" showUrls="True" UrlType="F"
                showlog="False" shownewwindow="False" showtrack="False" ShowDatabase="false" ShowNone="false" ShowSecure="false" ShowUpLoad="false" ShowUsers="false" />

devient :

<portal:URL id="image1" runat="server" width="300" showtabs="False" showfiles="True" showUrls="True" UrlType="F"
                showlog="False" shownewwindow="False" showtrack="False" ShowDatabase="True" ShowNone="True" ShowSecure="True" ShowUpLoad="True" ShowUsers="false" />

La restriction sur les extension doit se faire CodeBehind.

Seb
 
Nouveau message
01/04/2007 19:22
 

Re,

Je vais appliquer tes modif et tester. Mais j'ai déjà passé pas mal d'heures sur cette partie. Il existe un foutu bug dont je n'arrive pas a trouver la raison. Dans le fichier source ProductEdit.ascx.cs ligne 122, tu trouveras un bout de code en commentaire. En fait, je n'arrive pas à définir la propriété UrlType, ni même aucunes propriétés propres au composant (pas celle des contrôles sous jacent). Elle sont toutes avec une erreur NullReferenceException !? J'ai tout essayé, rien à faire. Il y un post à ce sujet. Donc, je crains que les restrictions ne soient pas non plus prises en compte.

Gilles

 
Nouveau message
01/04/2007 20:41
 
Voici le code que j'utilise pour ce contrôle Dnn :

ASCX :
<%@ Register TagPrefix="dnn" TagName="FileUpload" Src="~/controls/URLControl.ascx" %>
<dnn:fileupload id="ctlFileUpload" runat="server" width="325" Required="True" ShowTrack="False" ShowLog="False" ShowTabs="False" ShowUrls="False"></dnn:fileupload>



CodeBehind :
Protected WithEvents ctlFileUpload As UI.UserControls.UrlControl
Public Const glbImageFileTypes As String = "jpg,jpeg,jpe,gif,bmp,png,swf"

[Au moment du PageLoad]
   ctlFileUpload.FileFilter = glbImageFileTypes

[Au moment de l'update]
If Page.IsValid = True Then
MyObjectValidAttribut = ctlFileUpload.Url      // Il nous renvoie un FileID
end if



 
Nouveau message
01/04/2007 20:45
 
Pour jouer ensuite avec ce fileID:

Dim fileId As Integer = Integer.Parse(MyObjectValidAttribut.Substring(7))
Dim objFileController As New Services.FileSystem.FileController
Dim objFileInfo As Services.FileSystem.FileInfo = objFileController.GetFileById(fileId, PortalId)

Puis quelque chose du genre (pour écrire le bon SRC)
MonImage.WriteAttributeString("src", objFileInfo.Folder.Replace("\", "/") & objFileInfo.FileName)
 
Nouveau message
02/04/2007 01:58
 

Non non non, j'ai dû mal m'exprimer. Le problème n'est pas le code pour utiliser le controle. En fait, le code d'origine WWStore fait exactement la même chose que dans certains modules core en vb. J'ai appliqué tes modifications, et on peut maintenant ajouter un fichier avec le filtrage des extentions lors de la création d'une fiche produit. Il fallait juste renseigner les bonnes propriétés. Mais ce n'est pas en création qu'est le vrai problème ! Lors de la modification d'une fiche, je peux facilement déduire si l'image associée est sur le site ou à l'extérieur. Je voulais donc que le bouton radio de l'UrlControl soit correctement positionné au chargement. Avec le code sivant :

if (product.ProductImage.StartsWith("http://"))
{
    image1.UrlType = "U";
}
else
{
    image1.UrlType = "F";
}

Mais la propriété UrlType renvoie une exception System.NullReferenceException !? C'est le seul contrôle de la page qui pose problème, tous les autres sont des contrôles standards ASP.NET et leurs propriétés sont disponibles. Dans l'événement Load on teste s'il ne s'agit pas d'un PostBack, on créé alors un contrôleur de catégories pour charger la combobox, puis on créé un contrôleur de produits pour lire les valeurs des propriétés du produit sélectionné. Elles sont ensuite transmises aux différents contrôles de la page. A cet endroit, seul le contrôle UrlControl n'accepte pas d'affectation dans ses propriétés Url et UrlType ?! Le plus dingue c'est que la propriété Url affiche l'url passée en paramètre alors qu'elle est aussi en erreur, et que FileFilter accepte sans problème une valeur!

J'ai fais pas mal de recherche sur les forums us, il semble que ce contrôle soit très largement bogué. Charles Nurse a fait aussi un post pour indiquer qu'il était en cours de réécriture complète.

Si tu as une idée, elle sera la bienvenue ! J'ai failli perdre mes cheveux sur ce problème.

Gilles

 
Nouveau message
02/04/2007 15:29
 

L'erreur peut provenir du fait qu'on a déjà spécifié le paramètre F depuis le code ascx. Essaie d'enlever la spécification F et de la fixer en codebehind.
Pour déduire ensuite quel type d'image on a utilisé, tu peux utiliser .StartWith("fileId=") (alors filetype=F). C'est préferrable à .StartsWith("http://") Car les images peuvent aussi être sur FTP, FTPS, HTTPS.
Si cela ne fonctionne pas, tu peux aussi enlever les images externes (type U) dans un premier temps et ajouter un petit TODO.

Seb

 
Précédente
 
Suivante
HomeHomeProjetsProjetsStore : utilisa...Store : utilisa...Impossible dImpossible d'ajouter une image (Lors de la création d'un produit)