.comment-link {margin-left:.6em;}

zerosept

dimanche, janvier 29, 2006

Boite SqlRepeat

La boite SqlQuery automatise l'affichage du résultat d'une requête SQL dans une table à l'aide de l'objet XTable. La nouvelle boite SqlRepeat permet également d'afficher le résultat d'une requête SQL, mais offre plus de souplesse en ce qui concerne la présentation. Il est ainsi possible de définir :

  • le code html a afficher avant le résultat de la requête,
  • le code html servant de modèle pour formatter chaque ligne du résultat de la requête,
  • le code html à générer à la suite du résultat de la requête.

Exemple de paramétrage pour un fichier CSV :

  • Connection string : {odbc};Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=~/data/
  • Sql query :
    SELECT affix, givenName, legalName,
           telephone, email,
           addressLine1, postalCode, municipality
    FROM   [adresses.csv]
    ORDER BY postalCode DESC, legalName ASC, givenName ASC
  • Header section : <ol>
  • Template for each item : <h4>{0} {1} {2}</h4><ul><li>téléphone : {3}</li><li><a href='mailto:{4}'>{4}</a></li><li>{5} - {6} {7}</li></ul>
  • Footer section : </ol>

Dans le cas d'un fichier Excel, la paramétrage de la connexion et de la requête devraient être effectué de la façon suivante :

  • Connection string : {odbc};Driver={Microsoft Excel Driver (*.xls)};Dbq=~/data/adresses.xls
  • Sql query :
    SELECT affix, givenName, legalName,
           telephone, email,
           addressLine1, postalCode, municipality
    FROM   [Sheet1$]
    ORDER BY postalCode DESC, legalName ASC, givenName ASC

samedi, janvier 28, 2006

Mise en cache côté serveur

Révision de la durée de mise en cache pour l'ensemble des boites des toolbox Admin et Classic. Jusqu'à présent, celle-ci était généralement définie à -1 (pas de mise en cache) ou à 60 secondes. Ces valeurs ont été augmentées et établies selon les règles suivantes :

  • Xmlfeed et Blogmarks sont paramétrées par défaut à 10800 secondes (3 heures) pour éviter de trop solliciter les serveurs hébergeant les fils atom ou rss,
  • les boites de la toolbox Admin sont initialisées à -1,
  • les boites contenant un formulaire sont initialisées à -1 (sinon on se fait avoir et on a l'impression que ça ne marche pas :),
  • les boites dont le contenu dépend de la page en cours (Breadcrumbs, FileDir, ScreenInfo, SiteMenu) sont initialisées à -1,
  • toutes les autres boites passent à 600 secondes (10 minutes).

Réalisation du script 20060128_update.sql pour mettre à jour les tables qc_BoxTypes (paramétrage par défaut) et qc_Boxes (re-paramétrage des boites déjà existantes).

Google Sitemap et mise à jour fichiers

Modification des modules Aspxfile, Flashfile, Htmlfile, Image, Svgfile, Textfile, Xmlfeed et Xmlfile pour tester la date de dernière mise à jour du fichier (ou celle de sa création).

Lorsque celle-ci est supérieure d'une heure à la date de dernière mise à jour de l'écran, la date de mise à jour de l'écran est actualisée puis le fichier sitemap destiné à Google est regénéré. Cela permet d'éviter que la mise à jour des pages dont le contenu est basé sur des fichiers "externes" ne soit jamais signalée à Google.

Boite Blogmarks

Création d'une nouvelle boite pour simplifier l'affichage du fil atom produit par Blogmarks. Le module de configuration de cette boite permet de définir les éléments suivants :

  • nom de l'utilisateur,
  • liste des tags séparés par des espaces,
  • nombre d'entrées à afficher.

Le fil atom renvoyé par Blogmarks est ensuite transformé en code html par application du fichier feed-blogmarks.xslt

mercredi, janvier 25, 2006

HTTP 301 - Moved Permanently

Prise en compte des paramètres "permanentRedirectFrom" et "permanentRedirectTo" dans le web.config pour gérer une redirection permanente. Cela permet par exemple de changer le nom de domaine d'un site (et d'en informer correctement les moteurs de recherche) :

  • permanentRedirectFrom = http://www.monsite.info/
  • permanentRedirectTo = http://www.mon-site.com/
Cela peut aussi servir à unifier les urls pour éviter d'être référencé 2 fois (et donc de "gaspiller" son pagerank) :
  • permanentRedirectFrom = http://monsite.info/
  • permanentRedirectTo = http://www.monsite.info/

Références :

vendredi, janvier 20, 2006

Comment cibler les publicités AdSense

Il est possible d'indiquer à Google quelle sont les parties de la page dont on souhaite mettre le contenu en avant. Cela permet de cibler les annonces affichées sur le site en fonction de ce contenu.

Pour cela, il suffit d'encadrer le contenu "intéressant" par :

<!-- google_ad_section_start -->
    ....
<!-- google_ad_section_end -->

Il est aussi possible de "masquer" du contenu pour éviter d'avoir des annonces relatives à celui-ci :

<!-- google_ad_section_start(weight=ignore) -->
    ....
<!-- google_ad_section_end -->

Via «What is section targeting and how do I implement it?»

dimanche, janvier 15, 2006

Xmlfeed et Blogmarks

Amélioration en ce qui concerne la méthode utilisée pour gérer la transformation d'un document xml via xslt. Jusqu'à présent, c'était fait quasi-automatiquement à l'aide des propriétés DocumentSource et TransformSource du contrôle Xml. Après modification, la boite Xmlfeed fonctionne de la façon suivante :

  • la source est chargée dans un objet XmlDocument puis affectée à la propriété Document du contrôle Xml,
  • la fichier xsl est chargé dans un objet XslTransform qui est ensuite affecté à la propriété Transform du contrôle XML.

Cette solution permet d'avoir une meilleure gestion des erreurs, et aussi :

  • de reconnaitre le type de fil et donc de sélectionner automatiquement la feuille de style adéquate si besoin est,
  • de "bidouiller" le fil atom de Blogmarks car la mention "draft-ietf-atompub-format-05" dans xlmns="http://purl.org/atom/ns#..." (mais sans message d'erreur pour trouver comment gérer ça plus proprement).

En configuration, les types de fils xml sont passés de 6 (atom, sommaire atom, rss2, rss1, rdf et rss0.9) à 4 (atom, rdf, rss et automatique).

Par ailleurs, une feuille de style spéciale a été créée pour convertir le fil atom de Blogmarks en html, afin de gérer la miniature écran et la liste des tags.

Note : l'utilisation des propriétés Document et Transform en lieu et place de DocumentSource et TransformSource a été également mise en place au niveau de la boite Xmlfile.

samedi, janvier 14, 2006

Google Sitemap

Quick-Content peut désormais générer automatiquement un fichier sitemap.xml à chaque fois qu'un écran est modifié.

L'attribut «lastmod» correspond à la date de dernière mise à jour de l'écran telle qu'elle est enregistrée dans le champ «lastUpdate» de la table qc_Screens.

L'attribut «changefreq» est généré en comparant la date de dernière modification de l'écran à la date en cours :

  • "daily" s'il y a moins de 7 jours,
  • "weekly" s'il y a moins de 15 jours,
  • "monthly" s'il y a moins de 3 mois,
  • "yearly" dans les autres cas.

En ce qui concerne l'attribut «priority», il est initialisé à 0.7, 0.5 ou 0.3 selon que l'écran est de niveau 1, 2 ou 3.

La boite de configuration du site a été mise à jour pour permettre la saisie de l'url du fichier sitemap.xml à générer (en général, indiquer ~/sitemap.xml). Dans le cas où ASP.NET n'a pas de droit en écriture sur la racine du site mais seulement sur le sous-répertoire «/data», il faut :

  • indiquer "~/data/sitemap.xml" pour que Quick-Content puisse écrire le fichier,
  • placer le fichier «_sitemap.aspx» à la racine du site pour que Google accepte toutes les urls qu'il contient.

Le fichier «_sitemap.aspx» se contente de renvoyer le contenu du fichier «/data/sitemap.xml» :

<%@ Page Language="C#" %>
<script runat="server">
void Page_Load(object sender, System.EventArgs e) {
    Response.ContentType = "application/xml";
    Server.Transfer("data/sitemap.xml");
}
</script>

Il est également nécessaire d'inscrire l'url du fichier sitemap sur Google Sitemaps pour qu'il soit pris en compte.

Note : même si selon Google un fichier sitemap n'est pas censé améliorer le référencement du site, cela présente au moins les avantages suivants :

  • diminution de la consommation de bande passante par GoogleBot,
  • possibilité de vérifier et de suivre l'évolution de son utilisation sur le site Google Sitemaps (http://www.google.com/webmasters/sitemaps/).

Template au niveau écran

Prise en compte du champ «template» de la table qc_Screens pour avoir la possibilité de gérer un modèle de page spécifique à chaque écran (jusqu'à présent, le champ existait dans la table mais n'était pas utilisé).

Global.asax.cs (pour l'url rewriting) et Common.cs (pour la propriété stylePath) testent dans l'ordre :

  • qc_Screens.template : modèle de page spécifique à l'écran,
  • qc_Sites.template : modèle de page général pour le site,
  • "skidoo" : modèle de page par défaut de Quick-Content.

Par ailleurs, lorsque le nom du modèle de page contient une barre de division, on considère qu'il ne pointe pas seulement vers le sous-répertoire correspondant au modèle de page, mais qu'il indique aussi le nom du fichier représentant ce modèle de page :

  • template = "azerty" => utiliser /res/_azerty/default.aspx,
  • template = "azerty/autre" => utiliser /res/_azerty/autre.aspx.

Note : pour l'instant, il n'est pas encore possible de définir la valeur du champ «template» des écrans autrement que par une mise à jour manuelle de la base de données.

jeudi, janvier 12, 2006

VistaDB 2.1 database for .NET has been released

This 2.1 update includes over 60 improvements, including new support for .NET 2.0 and Visual Studio 2005 VistaDB is a small-footprint, embedded SQL database alternative to Jet/Access, MSDE and SQL Server Express 2005 that enables developers to build .NET 1.1 and .NET 2.0 applications. Features SQL-92 support, small 500KB embedded footprint, free 2-User VistaDB Server for remote TCP/IP data access, royalty free distribution for both embedded and server, Copy 'n Go! deployment, managed ADO.NET Provider, data management and data migration tools. Free trial is available for download.

C'est pas vraiment sûr que ça marche parce que :

  1. c'est peut-être un peu tard pour s'y mettre,
  2. mon blogue n'est pas connu,
  3. j'écris en français.

Et pourtant,

  1. j'en ai quand même plus besoin que lui,
  2. ça me serait bien pratique pour mes tests.

Si ça marche et qu'on peut utiliser la version "embeded" avec ASP.NET (et chez eux) alors on peut espérer qu'une future version de Quick-Content soit compatible VistaDB :)

mercredi, janvier 11, 2006

Gestion de répertoires cachés

Modification du contrôle FileExplorer pour ne pas faire apparaitre les répertoires dont le nom commence par le caractère "_" (souligné).

Cela permet par exemple de "cacher" très simplement certains répertoires où on a stocké les fichiers liés à une une boite Documents confidentielle.

Répertoire stockage des documents

Ajout d'un paramètre pour définir dans quel sous-répertoire il faut stocker les fichiers téléchargés via la boite Documents.

Le sous-répertoire "~/data/docs/" est proposé par défaut lors de la première configuration. A la sauvegarde, le sous-répertoire défini est créé s'il n'existe pas encore. Dans le cas où la création n'a pas été possible, le paramètre est ré-initialisé à "~/data/docs/" avant de l'enregistrer.

Filtrage de la boite Documents

Modifications du fonctionnement de la boite Documents pour permettre de "contextualiser" la liste des documents en fonction d'un argument présent dans l'url :

  • définition du nom du paramètre dans l'écran de configuration,
  • utilisation de la valeur attribuée au paramètre lors de l'ajout d'un nouveau document (la valeur est enregistrée dans le champ catégorie),
  • prise en compte de la valeur attribuée à ce paramètre pour filtrer la liste des documents présentés dans la liste.

Exemple : si le nom du paramètre a été configuré à "folder", le fait d'appeler la page contenant la boite Documents avec une url de la forme "http://www.monsite.com/downloads.asxp?folder=sources" permettra de n'afficher que les documents pour lesquels le champ categorie contient la valeur "sources". Et les fichiers ajoutés seront automatiquement enregistrés avec la catégorie "sources".

Lorsque le paramètre n'est pas présent dans l'url, les boutons de mise à jour des documents (ajout et modification) ne sont pas disponibles.

Important : dans le cas où cette fonctionnalité est utilisée, il est obligatoire de définir la durée du cache à 0 !

jeudi, janvier 05, 2006

Correction SiteTree

Cette brique ne tenait pas compte du fait que l'écran soit visible ou non lors de la génération de l'arborescence du site. Par conséquent, le treeview généré pour représenter le plan du site contenait les pages cachées ou les pages d'administration seulement marquées comme non visibles.

Affiche de la barre d'outils d'administration

Lorsque la barre contenant la barre des outils d'administration est en mode réduit, elle est désormais chargée après toutes les autres briques de la page. De cette façon, elle apparait en fin de page et "pollue" encore moins l'affichage qui devient très proche de ce que verra un utilisateur normal.