Problème : Comment ajouter un paramètre utilisateur, un "setting" dans le fichier settings.xml.
Je veux ajouter la possiblité à l'utilisateur de configurer le "sujet" des emails envoyés par BlogEngine.NET.
J'ai un certain nombre d'applications qui tournent sur le réseaux et qui me transmettent des emails.
Si je ne peux pas paramètrer le sujet des emails, je me demande toujours, pendant un moment, d'où ils peuvent bien provenir ...
Les settings sont idéaux pour ce que je veux faire.
Il me faut pouvoir ajouter dans settings.xml un tag dans le genre :
<emailsubject>Coucou c'est mon blog ASP.NET C# Blog - </emailsubject>
Et la gestion de ce tag dans l'interface graphique et le code, ce qui donne :
Dans l'interface graphique :
BlogEngine.NET v1.2.1\admin\Pages\Settings.aspx
<div class="settings">
<h1>E-mail</h1>
<label>Sujet</label>
<asp:TextBox runat="server" ID="txtEmailSubject" Width="300" /><br />
Dans le code :
Pour l'instant, le texte du label n'est pas dans les ressources mon sujet n'étant pas l'internationnalisation.
\BlogEngine.NET v1.2.1\admin\Pages\Settings.aspx.cs
private void BindSettings()
{
//-----------------------------------------------------------------------
// Set Email settings
//-----------------------------------------------------------------------
BlogSettings.Instance.EmailSubject = txtEmailSubject.Text;
//-----------------------------------------------------------------------
// Bind Email settings
//-----------------------------------------------------------------------
txtEmailSubject.Text = BlogSettings.Instance.EmailSubject;
C'est terminé.
A j'oublais dans BlogEngine.NET 1.2.1\BlogEngine.NET v1.2.1\contact.aspx.cs dans la fonction :
private bool SendEmail()
{
Remplacez la ligne existante par la ligne :
mail.Subject = BlogSettings.Instance.EmailSubject + txtSubject.Text;
Comment se miracle est-il possible ? Très simple, tout se trouve dans l'utilisation judicieuse de l'objet : StringDictionary dans :
BlogEngine.NET 1.2.1\BlogEngine.Core\Providers\BlogProvider.cs
public abstract StringDictionary LoadSettings();
/// <summary>
/// Saves the settings to the provider.
/// </summary>
public abstract void SaveSettings(StringDictionary settings);
C'est deux fonctions sont implémentées soit façon XmlProvider soit SqlProvider.
Efficace non ?