Module d'inscription simplifié
Auteur : Sébastien Fichot
Date de pulication : 12 mai 2010
Article consulté 25245 fois

(2 votes)
MàJ 28/07/2010 : Le module a été mis à jour.
Avec l'ouverture de la nouvelle plateforme DotNetNuke France, j'ai décidé d'offrir à la communauté open-source un certain nombre de modules développés pour l'occasion sous l'espace de nom OpenSourceObject (OSO). Je présenterai dans le futur d'autres modules de ce genre, mais je souhaite commencer par le module OSO.Register.to.Newsletter.
Le module
OSO.Register.to.Newsletter est le module que vous pouvez voir en bas de cette page, sous la bannière "Restez informé !". Il se compose d'un texte d'introduction, d'une zone de texte, et d'un bouton "S'inscrire".

Ce module très simple dans son code fonctionne suivant le processus suivant :
- Reçoit une adresse courriel dans la zone de texte au moment du click sur "S'inscrire".
- Valide l'adresse courriel et affiche un message d'erreur au besoin.
- Créé un compte utilisateur en générant le login à partir de la partie de l'adresse courriel se situant avant l'arobase. Par exemple, si je m'inscris avec l'adresse courriel Toto@dnn.com, mon pseudonyme sera Toto.
- Enfin, il inscrit le nouvel utilisateur à la lettre d'information. Si l'utilisateur est déjà inscrit au site, il l'enregistre uniquement pour recevoir la lettre d'information (Si ce n'est pas déjà fait).
Et c'est tout !
La bibliothèque de fichiers contient le package d'install et le code source.
Le module sera maintenu à la demande et sur les version majeures de DotNetNuke.
Il n'est pas prévu d'amélioration pour le moment, et le module se base sur jQuery pour valider l'adresse courriel. Vous êtes libres de modifier ce module comme bon vous semble et de l'intégrer dans vos dispositifs commerciaux, mais vous devrez livrer à la communauté DotNetNuke France le fruit de vos améliorations. Nous aurons l'occasion de discuter un peu plus tard des licenses qui s'appliquent aux modules open-source qui seront distribués sur la plateforme DotNetNuke France, mais comme c'est le lancement il reste beaucoup d'autres choses pus importantes à faire.
La distribution du module est assurée par la librairie de fichiers. Pour accéder au dossier du module et télécharger la dernière version, cliquez ici.
La principale fonction du module :
Protected Sub cmdSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSubmit.Click
Try
If Me.UserInfo.IsInRole("Registered users") Then
' Registered user
If Not Me.UserInfo.IsInRole("Subscribers") Then
' The user is not already in the subscribers role
Dim objRCtler As New RoleController
Dim objRole As RoleInfo = objRCtler.GetRoleByName(Me.PortalId, "Subscribers")
objRCtler.AddUserRole(Me.PortalId, Me.UserId, objRole.RoleID, Null.NullDate)
DotNetNuke.Services.Mail.Mail.SendMail(Me.UserInfo, Services.Mail.MessageType.ProfileUpdated, Me.PortalSettings)
End If
Else
' New user
Dim strPart As String = Me.txtNewsletterEmail.Text.Split("@")(0)
' Create and hydrate User
Dim objUser As New UserInfo
objUser.Profile.InitialiseProfile(Me.PortalId, True)
objUser.PortalID = Me.PortalId
objUser.DisplayName = strPart
objUser.Email = Me.txtNewsletterEmail.Text
objUser.FirstName = strPart
objUser.LastName = strPart
objUser.Username = strPart
objUser.Membership.CreatedDate = Date.Now
objUser.Membership.Password = DotNetNuke.Entities.Users.UserController.GeneratePassword(9)
objUser.Membership.UpdatePassword = True
Select Case PortalRegistrationType.VerifiedRegistration
Case PortalRegistrationType.PublicRegistration
objUser.Membership.Approved = True
Case Else
objUser.Membership.Approved = False
End Select
' Create the user
Dim objAnswer As UserCreateStatus = UserController.CreateUser(objUser)
Dim boNotify As Boolean = False
Select Case objAnswer
Case UserCreateStatus.Success
boNotify = True
Case Else
' registration error
boNotify = False
End Select
If boNotify Then
' 'Send Notification to User
Select Case PortalRegistrationType.VerifiedRegistration
Case PortalRegistrationType.NoRegistration
' Do nothing
Case PortalRegistrationType.PrivateRegistration
DotNetNuke.Services.Mail.Mail.SendMail(objUser, Services.Mail.MessageType.UserRegistrationPrivate, Me.PortalSettings)
Case PortalRegistrationType.PublicRegistration
DotNetNuke.Services.Mail.Mail.SendMail(objUser, Services.Mail.MessageType.UserRegistrationPublic, Me.PortalSettings)
Case PortalRegistrationType.VerifiedRegistration
DotNetNuke.Services.Mail.Mail.SendMail(objUser, Services.Mail.MessageType.UserRegistrationVerified, Me.PortalSettings)
End Select
End If
End If
Catch ex As Exception
ProcessModuleLoadException(Me, ex)
End Try
End Sub