Affichage des articles dont le libellé est Telerik. Afficher tous les articles
Affichage des articles dont le libellé est Telerik. Afficher tous les articles

lundi 19 juillet 2010

Problème d'affichage de texte lors d'un upload d'image dans le module "Text/HTML" (RadEditor) de DNN

Voici un problème auquel j'ai été confronté et pour lequel je n'ai trouvé aucune information sur le net. Deux possibilités pouvant expliquer cela :
  • je n'ai pas utilisé les bons termes de recherche dans google,
  • personne n'a le problème.
Aucun où quelqu'un d'autre tomberait sur ce soucis, en voici les symptômes, lorsque j'édite le contenu d'un module "Text/HTML", j'utilise le composant RadEditor de Telerik. Il se trouve que toutes les fenêtres filles que j'ouvre à partir de ce composant sont sans texte. 

Exemple : La fenêtre permettant d'insérer une image


Aucun texte n'est visible sur les onglets, les boutons,...

Pour remédier à cela il faut placer dans le dossier "Providers\HtmlEditorProviders\Telerik\App_LocalResources" de votre instance DNN les fichiers ressources français de Telerik, en voici la liste :
  • RadEditor.Dialogs.fr-FR.resx
  • RadEditor.Main.fr-FR.resx
  • RadEditor.Modules.fr-FR.resx
  • RadEditor.Tools.fr-FR.resx
Voici le même fenêtre que ci-dessus après avoir rajouté les fichiers listés :



Suite aux différents commentaires échangés sur le sujet, voici un petit rajout : pour que tout fonctionne correctement il faut aussi modifier le fichier "SharedResources.fr-FR.resx" se trouvant dans le répertoire "App_GlobalResources" de DNN. La clef à modifier est "PortalRoot.Text", il faut lui affecter la valeur d'origine qui est "Portal Root". Cette modification est essentielle.

jeudi 15 juillet 2010

Utilisation d'un RadTreeview dans un RadComboBox

Dans le cadre d'un projet sous DNN, j'ai dû utiliser les contrôles Telerik, notemment un RadComboBox contenant un RadTreeview, celui-ci étant chargé dynamiquement. Je me suis trouvé confronté au problème suivant : à la sélection d'un node du treeview, je souhaitais afficher dans la combobox le libellé de l'élément sélectionné.

On trouve sur le site de Telerik (éditeur de ces contrôles) pas mal d'exemples de ce type, la réponse passe par du code javascript exécuté lors du click sur le node, voici un exemple de code à mettre en place :

function nodeClicking(sender, args)
{
var comboBox = $find("RadComboBox1");

var node = args.get_node();

comboBox.set_text(node.get_text());

comboBox.hideDropDown();
}


Comme vous pouvez le constater dans ce script, le nom de la combobox est connu. Mais dans le cas d'une utilisation sous DNN, le problème est légèrement différent.

En effet, nous pouvons trouvez plusieurs modules utilisant ce fonctionnement sur une même page et dans ce cas, le nom de la combobox change bien entendu. Il faut donc procéder autrement. Nous n'utiliserons plus la fonction $find, il faut ici récupérer la combobox parente du treeview à l'origine de l'appel à la fonction nodeClicking. Voilà ce que nous pourrions avoir :


function nodeClicking(sender, args)
{
//Récupération du client Id du treeview à l'origine de l'appel
var treeviewId=sender.get_id();
//Ce Client Id contient le nom de la combobox parente
//On récupère sa position dans le client Id du treeview (ici l'Id serveur de la combobox est "RadComboBox1")
var index=treeviewId.lastIndexOf(""RadComboBox1"");
//Récupération du client Id de la combobox parente, le 12 correspond à la longueur de l'Id serveur de la combobox
var comboBoxId=treeviewId.substring(0,index+12);

//Récupération de l'instance de la combobox
var comboBox = $find(ClientID);

var node = args.get_node();

comboBox.set_text(node.get_text());

comboBox.hideDropDown();
}



Voici les deux liens qui m'ont permis de rédiger ce billet :
http://www.telerik.com/community/forums/aspnet-ajax/treeview/radcombobox-radtreeview-loadondemand.aspx
http://www.telerik.com/community/forums/aspnet-ajax/combobox/access-radtreeview-parent-control.aspx

lundi 21 juin 2010

RadAnsyncUpload et DNN

Un petit billet suite à un problème rencontre avec le contrôle "RadAsyncUpload" de Telerik sous DotNetNuke.

Une petite présentation concernant ce contrôle pour ceux qui ne connaitraient pas : ce contrôle permet de remonter des fichiers de façon asynchrone sur le serveur. Exemple d'utilisation : vous souhaitez donner la possibilité à vos utilisateur de remonter des fichiers images sur votre site et de les visualiser dans la foulée sur la même page sans valider cette dernière (pas de postback donc).

Après avoir mis en place ce contrôle dans un module DNN, je me trouvais face à joli problème : chaque upload de fichier tombait en erreur (un point d'exclamation rouge à gauche du nom du fichier). Aucun événement serveur ne se levait et sur le client l'évément "onClientFileUploadFailed" se levait bien mais la méthode "args.get_serverResponse()" ne retournait aucune erreur (voir ce message sur le forum de Telerik).

Pourtant j'avais déjà utilisé ce contrôle sous DNN avec succès sous un autre projet. Alors pourquoi cela a-t-il déjà marché et cela ne marche-t-il plus ? En fait le projet sous lequel le contrôle marchait avait une particularité : les utilisateurs ne s'identifiaient pas ! La clef était là, en effet si je ne m'identifiais pas le contrôle fonctionnait sinon il y avait systématiquement l'erreur.

Me voilà donc rendu à éplucher le module de connexion DNN, et après avoir désactivé chaque ligne j'ai enfin trouvé LA cause du problème : Response.Redirect(..., True). Dans le module de connexion, une fois que l'utilisateur est identifié, une redirection est effectuée avec le paramètre "True" (indiquant que le traitement de la page en-cours doit s'arrêter). En passant ce paramètre à "False", plus de problème.

Heureusement pour moi j'avais mon propre module de connexion, donc pas de soucis pour modifier cela. Si ce n'est pas votre cas... vous savez ce qu'il vous reste à faire.