Mise à jour de ce module : 29 Mai 2010
La Shootbox (Shoutbox an anglais) est un module que j'ai développé pour Cms Made Simple dans le but de réaliser un système se rapprochant des "chat" de discussion. La différence se situe dans la non-mémorisation du pseudo utilisé (libre) et de la persistance des messages dans le temps et non dans la session. Ca vous permet ainsi de lire les messages postés pendant votre absence par les autres visiteurs.
Son principe est volontairement simplifié à l'extreme pour celui qui l'utilise, tout en gardant une grande quantité de paramètrage possible pour l'administrateur du site web, chacun peut donc l'installer et l'intégrer selon ses goûts et ses besoins.
Cette dernière version (V1.2.1) inclut un bon nombre de fonctionnalités demandées ces dernières semaines sur les forums de CMS MADE SIMPLE france. Si vous avez une idée, n'hésitez pas à proposer.
Pour voir un exemple d'utilisation, il suffit de regarder sur la droite du site :)
Exemple de code
A placer avec les accolades dans votre gabarit ou carrement dans la page :
{cms_module module='shootbox' maxInScreen='25' maxInDb='100' refresh='3000' timeFormat='H:i:s' delayOfLastShoot='20' sort='desc' url='lien externe' scroll='free'}
et le Css appliqué dans mon cas précis :
#shoutbox{
}
#shoutbox_contenu{
height:250px;
overflow-y:scroll;
margin-right:-14px;
}
.delayOfLastShoot{
display:block;
font-size:0.9em;
font-style:italic;
text-align:center;
}
.shoot_date, .shoot_author{
font-family:Times New Roman;
font-weight:bold;
}
.shoot_texte{
}
.last{
}
#shootboxDiv{
}
#shootboxSpan{
}
#shootboxCreditSpan{
}
Liste des paramètres
- (optional) lang="en_US" - Paramètre utilisé pour spécifier dans quelle langue afficher le module dans la partie publique. Ce paramètre n'est pas supporté ou utile pour tous les modules.
- (optional) maxInScreen="" - Nombre de shoot en affichage. Valeur par défaut : 10
- (optional) maxInDb="" - Nombre de shoot à conserver en base. Valeur par défaut : 40
- (optional) refresh="" - durée en miliseconde avant de rafraichir la liste des shoots. Valeur par défaut : 2000ms (2secondes). NE PAS DEFINIR A UNE VALEUR INFERIEUR A 1000 (surcharge du serveur)
- (optional) timeFormat="" - Format de la date de création d'un shoot. Valeur par défaut : H:i:s. Plus d'information sur : http://fr.php.net/manual/en/function.date.php
- (optional) delayOfLastShoot="" - durée en seconde accordée avant d'afficher un message spécifiant le délai écoulé depuis le dernier shoot. Par défaut : aucun message
- (optional) sort="" - Spécifie le tri. "ASC" (par défaut) trie du plus ancien en haut au plus récent en bas de liste. "DESC" pour l'inverse
- (optional) url="" - Gère les urls :
"none" => remplace l'url par un mot,
"default" => l'option par défaut, écrit l'url sans lien html
"link" => génère un lien html externe sans changer le texte,
"xxxx" => génère un lien html externe, remplace le texte par "xxxx" ou autre chose. - (optional) scroll="" - Définir à "free" Si la position de l'asenceur de la div #shoutbox_contenu ne doit pas bouger à chaque refresh Ajax. Définir à "last" pour qu'il garde le focus sur le dernier message envoyé (dépends du paramètre sort dans ce cas). Par défaut : "last". Inutile si #shoutbox_contenu n'a aucune hauteur fixé (css).
- (optional) credit="" - Par défaut : "true". Affiche un (très petit) lien vers mon site web. Définir à faux pour cacher le lien
Ils ont installé ce module sur leur propre site web, merci à vous :)
http://www.sygmathe.com : groupe de musique francophone
http://www.klapperhagen.de/start : site allemand
http://www.alpha-team.fr : site français d'airsoft
http://www.cmsmadesimple.sk/ukazky/shootbox/ : site slovaque dédié à CmsMadeSimple
Changlog
- Version 1.2.1 FEU Edition, 29 Mai 2010 | Bess
- version non officielle, c'est un code supplémentaire pour intégrer les connexions depuis FrontEndUsers. Voir en bas de page pour plus d'information.
- add : L'input Texte "Shootboxinput" récupère automatiquement le focus
- add : Vous pouvez bloquer la position de la div #shoutbox_contenu avec le nouveau paramètre "scroll=last|free"
- add : des crédits pour mon travail ;) (désactivable)
- update : renommage de l'id du span passant ainsi de ShootboxInput à shootboxSpan. Vérifiez votre CSS !
- Version 1.2.0, 12 Juin 2009 | Bess
- fix : XHTML 1.0 Strict validation
- update : ré-écriture du code pour gagner en performance
- add : Ajout d'un lien pour permettre la déconnexion
- add : Nouveau système de cache pour gagner en performance
- add : Le contenu de l'input Texte pseudo se vide dès que l'on click dedans.
- add : Le contenu de l'input Texte se vide dès que l'on valide le message (évite le double envois).
- Version 1.1.0, 22 Mai 2009 | Bess
- fix : bug3417 le symbole # ne fonctionne pas
- fix : bug3418 le symbole & ne fonctionne pas
- fix : bug3419 le symbole + ne fonctionne pas
- remove : Dépendance avec le module AjaxMAdeSimple (pour corriger des bugs)
- add : gabarit pour le dernier shoot
- add : ganarit pour les autres shoots
- add : gabarit pour le cas ou aucune donnée n'a été trouvée en base
- add : gabarit pour le cas ou l'on doit afficher le temps écoulé depuis le dernier shoot
- add : paramètre pour gérer l'affichage des url (cachée, normale, réécriture, ...)
- add : tri des shoots croissant ou décroissant
- add : message avec le délai entre le dernier shoot et maintenant.
- Version 1.0.1, 08 Mai 2009 | Bess
- fix : XHTML 1.0 Transitional validation (Merci à Jean Le chauve)
- fix : symbole euro ne fonctionne pas (Merci à Jean Le chauve encore une fois)
- add : commande shell : "/quit" pour se déconnecte quand vous le souhaitez.
- Version 1.0, 06 Mai 2009 | Bess
- Mise en place du projet.
Lier la Shoutbox avec le module FEU
Pour intégrer la shoutbox avec le module FEU et faire en sorte qu'à la connexion à FEU l'utilisateur se connecte en automatique à la shoutbox c'est assez facile :
Ouvrir le fichier Shootbox.module.php dans le répertoire /module/shootbox
trouver :
if (isset($_SESSION[$sessionAuthor]) && $_SESSION[$sessionAuthor] != "")
ajouter avant :
$gCms =& $GLOBALS["gCms"]; //Si le module FEU est installé et qu'une personne est logguée on récupère son pseudo if( isset( $gCms->modules['FrontEndUsers'] ) && isset( $gCms->modules['FrontEndUsers']['object']) && $gCms->modules['FrontEndUsers']['object']->LoggedInId() != null) { $feuModule = $gCms->modules['FrontEndUsers']['object']; $user_properties = $feuModule->GetUserProperties($feuModule->LoggedInId()); $login = null; //On récupère le pseudo de la personne foreach ($user_properties as $user_propertie) { if($user_propertie["title"] == "pseudo") // Choice the name of the user's property to show { $login = $user_propertie["data"]; break; } } if($login == null) { $login = $feuModule->LoggedInId(); } $_SESSION[$sessionAuthor] = $login; return "<div id=\"shootboxDiv\"> <span id=\"shootboxNickname\">".$_SESSION[$sessionAuthor]." : </span> <span id=\"shootboxSpan\">".$this->CreateInputText ($this->GetName(), 'input', null, null, 500)."</span> ".$this->_getCredit()." </div>"; }
Enregistrer.
