La pate à crêpes
ingrédients:
* 250g de farine
* 4 oeufs
* un demi-litre de lait
* 1 pincée de sel
* 50 grammes de beurre
* 1 sachet de sucre vanillé
* 1 cuillère à soupe de rhum (5 cl)
Recette:
1 – Dans un saladier, verser la farine et les oeufs. Puis progressivement ajoutez le lait tout en mélangeant avec votre fouet. Ajoutez le sucre vanillé, ou la canelle, et la pincée de sel.
Surtout ne mélangez pas la farine et les oeufs avant de mettre le lait. Vous obtiendriez une sorte de pâte bien difficile à mélanger au lait (pleine de grumeaux !).
Versez le lait progressivement pour rendre homogène le mélange.
2 – Laissez reposer la pâte à crêpe si possible une heure.
Faites chauffer une poêle, une fois chaude, versez un peu de beurre pour graisser la poêle.
3 – Versez une demi-louche de votre pâte à crêpe et faites cuire 1 à 2 minutes par face.
Voila vos crèpes sont prètes, vous pouvez maintenant les déguster. Bon appétit!
source: http://www.pate-a-crepe.info
les differentes redirections
Tous les types de redirections et les avantages de chacun:
-Redirection PHP
header('Location: mapage.php');
exit();
?>
Particulièrement utile dans le cas d’une boucle conditionnelle.
Cependant, cette fonction header() doit impérativement être utilisée avant tout code HTML.
Méthode conseillée pour le référencement.
-Redirection ASP
response.status = "301 moved permanently" response.addheader "location", "http://www.votre-site.com/" response.end
Méthode conseillée pour le référencement.
-redirection html via la balise meta
< meta http-equiv="Refresh" content="20;URL=page2.html">
-content: nombre de secondes avant redirection.
Trop utilisée pour liée des pages satellites, cette méthode est déconseillée pour un bon référencement.
-redirection avec javascript
window.location.replace( "http://www.site.com/page.htm");
Cependant les robots ignorent le JavaScript, cette méthode est donc déconseillée pour un bon référencement.
Webrankinfo propose un très bon article sur les redirections:
http://www.webrankinfo.com/dossiers/strategies-de-liens/tutoriel-redirections
Recette de pizza traditionnelle
Ingrédients pour 1 plaque (3-4 personnes) :
Pâte à pizza
- 400 g de farine (Type 1050)
- 1 sachet de levure sèche ou 21 g de levure de boulanger
- 1 c. à café de sel, 1 pincée de sucre
- env. 200 ml d’eau tiède
- un peu de farine
Sauce rouge
- 2 c. à soupe de concentré de tomates
- 4 c. à soupe de dés de tomates (si possible fraîches !)
- Sel, poivre
- épices à pizza ou origan séché

Préparation pâte à pizza :
Mélanger la farine avec la levure sèche, le sel et le sucre, ou dissoudre la levure de boulanger et le sucre dans un peu d’eau tiède et ajouter le mélange à la farine.
Incorporer de l’eau tiède. Malaxer vigoureusement la pâte jusqu’à ce qu’elle ne colle plus. Le cas échéant, ajouter un peu de farine ou d’eau. Laisser reposer la pâte à couvert dans un endroit chaud pendant 30 minutes environ (elle doit doubler de volume).
Pendant ce temps, préparer la garniture (voire les variantes). Préchauffer le four à 220°. Bien malaxer la pâte, l’abaisser jusqu’à obtenir un rectangle de la taille de la plaque du four et la déposer sur le papier sulfurisé déroulé sur la grille. Garnir selon ses goûts. Enfourner pendant 15 minutes environ (directement sur la paroi du four ou au niveau 1).
Astuce : La pâte ne lève pas ? Poser le plat au-dessus d’une casserole remplie d’eau bouillante ou l’enfourner à 50°. Si rien ne se passe, dissoudre un sachet de levure chimique dans une cuillerée à soupe d’eau tiède et mélanger à la pâte.
Préparation sauce rouge pour pizza :
Mélanger le concentré de tomates et les dés de tomates. Saler et poivrer, ajouter les épices à pizza ou l’origan.
Napper pâte et garnir au choix. (Voir ci-dessous).
Astuce : Relever la sauce avec du Tabasco. Elle sera encore plus parfumée avec des herbes fraîches hachées.
Temps de préparation pâte : env. 20 min. (+30-45 min. de repos pour la pâte)
Temps de préparation sauce rouge : env. 5 min.
MyBB forum et MODx CMS
Cet article est la traduction de la méthode pas à pas pour permettre la synchronisation entre le prometteur forum mybb et l’excellent content-manager MODx.
Ce snippet pour MODx permet d’ajouter un certain nombre de fonctions de liaison entre le forum MyBB et notre CMS favoris.
1. Pour commencer, on va créer un fichier mybb_functions.php à partir du script ci dessous :
read("usergroups");
$mcache = $cache->read("moderators");
// If the groups cache doesn't exist, update it and re-read it
if(!is_array($groupscache)) {
$cache->updateusergroups();
$groupscache = $cache->read("usergroups");
}
// Read forum permissions cache
$fpermissioncache = $cache->read("forumpermissions");
// Create session for this user
require_once MYBB_ROOT."inc/class_session.php";
$session = new session;
$session->init();
// Set and load the language
if(!isset($mybb->settings['bblanguage']))
{
$mybb->settings['bblanguage'] = "english";
}
// Load language
$lang->set_language($mybb->settings['bblanguage']);
$lang->load("global");
function latestposts($db,$mybb) {
$newinfo = array();
$query = $db->simple_select(TABLE_PREFIX."posts", "COUNT(pid) AS newposts", "dateline>'".$mybb->user['lastvisit']."' $unviewwhere");
$newinfo['newposts'] = $db->fetch_field($query, "newposts");
if($newinfo['newposts'])
{ // if there aren't any new posts, there is no point in wasting two more queries
$query = $db->simple_select(TABLE_PREFIX."threads", "COUNT(tid) AS newthreads", "dateline>'".$mybb->user['lastvisit']."' $unviewwhere");
$newinfo['newthreads'] = $db->fetch_field($query, "newthreads");
$query = $db->simple_select(TABLE_PREFIX."threads", "COUNT(tid) AS newann", "dateline>'".$mybb->user['lastvisit']."' AND fid IN (".$mybb->settings['portal_announcementsfid'].") $unviewwhere");
$newinfo['newann'] = $db->fetch_field($query, "newann");
if(!$newinfo['newthreads'])
{
$newinfo['newthreads'] = 0;
}
if(!$newinfo['newann'])
{
$newinfo['newann'] = 0;
}
}
else
{
$newinfo['newposts'] = 0;
$newinfo['newthreads'] = 0;
$newinfo['newann'] = 0;
}
return $newinfo;
}
function onlinelist($db,$mybb,$cache) {
$timesearch = time() - $mybb->settings['wolcutoff'];
$comma = '';
$guestcount = 0;
$membercount = 0;
$onlinemembers = '';
$query = $db->query("
SELECT s.sid, s.ip, s.uid, s.time, s.location, u.username, u.invisible, u.usergroup, u.displaygroup
FROM ".TABLE_PREFIX."sessions s
LEFT JOIN ".TABLE_PREFIX."users u ON (s.uid=u.uid)
WHERE s.time>'$timesearch'
ORDER BY u.username ASC, s.time DESC
");
$online = array();
while($user = $db->fetch_array($query))
{
if($user['uid'] == "0")
{
$guestcount++;
}
else
{
if($doneusers[$user['uid']] usergroup['canviewwolinvis'] == "yes")
{
if($user['invisible'] == "yes")
{
$invisiblemark = "*";
}
else
{
$invisiblemark = '';
}
$online['users'][] = array('name' => $user['username'], 'uid' => $user['uid'], 'group' => $user['usergroup'], 'forumnamestyle' => format_name($user['username'], $user['usergroup'], $user['displayname']));
}
}
}
}
$onlinecount = $membercount + $guestcount + $anoncount;
// Most users online
$mostonline = $cache->read("mostonline");
if($onlinecount > $mostonline['numusers'])
{
$time = time();
$mostonline['numusers'] = $onlinecount;
$mostonline['time'] = $time;
$cache->update("mostonline", $mostonline);
}
$recordcount = $mostonline['numusers'];
$recorddate = my_date($mybb->settings['dateformat'], $mostonline['time']);
$recordtime = my_date($mybb->settings['timeformat'], $mostonline['time']);
$online['count'] = $onlinecount;
$online['members'] = $membercount;
$online['guests'] = $guestcount;
return $online;
}
function compare($x, $y) {
if ( $x[4] == $y[4] )
return 0;
else if ( $x[4] < $y[4] )
return -1;
else
return 1;
}
function compare2($a, $b) {
if ($a['date'] == $b['date']) {
return 0;
}
return ($a['date'] simple_select(TABLE_PREFIX."events", "*", 'private="no"');
while ($event = $db->fetch_array($query)) {
$event['date'] = explode("-", $event['date']);
$event['date'] = gmmktime(0, 0, 0, $event['date'][1], $event['date'][0], $event['date'][2]);
if ($event['date'] > gmmktime(0, 0, 0, date('n', time()), date('j', time())-1, date('Y', time()))) {
if(my_strlen($event['subject']) > $trim)
{
$event['short_subject'] = trim(my_substr($event['subject'], 0, $trim)) . "...";
}
$event['format_date'] = my_date($dateformat , $event['date'], "", 0);
$eventlist[] = $event;
}
}
usort($eventlist, 'compare2');
$eventlist = array_slice($eventlist, 0, $limit);
return $eventlist;
}
function headlines($db,$mybb,$cache,$templates,$parser,$fid,$limit) {
require_once MYBB_ROOT."inc/class_parser.php";
$parser = new postParser;
$pids = '';
$comma="";
if (strpos($fid, ",")) {
$fids = explode(",", $fid);
$i = 1;
foreach ($fids as $forumid) {
if ($i > 1) {
$forums .= " OR t.fid = '".$forumid."'";
} else {
$forums .= "'".$forumid."'";
}
$i++;
}
} else {
$forums = "'".$fid."'";
}
$query = $db->query("
SELECT p.pid, p.message, p.tid
FROM ".TABLE_PREFIX."posts p
LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid)
WHERE t.fid = ".$forums." AND t.visible='1' AND t.closed NOT LIKE 'moved|%' AND t.firstpost=p.pid
ORDER BY t.dateline DESC
LIMIT 0, ".$limit
);
while($getid = $db->fetch_array($query))
{
$pids .= ",'$getid[pid]'";
$posts[$getid['tid']] = $getid;
}
$pids = "pid IN(0$pids)";
// Now lets fetch all of the attachments for these posts
$query = $db->query("SELECT * FROM ".TABLE_PREFIX."attachments WHERE $pids");
while($attachment = $db->fetch_array($query))
{
$attachcache[$attachment['pid']][$attachment['aid']] = $attachment;
}
$icon_cache = $cache->read("posticons");
$announcements = '';
$forums = "";
if (strpos($fid, ",")) {
$fids = explode(",", $fid);
$i = 1;
foreach ($fids as $forumid) {
if ($i > 1) {
$forums .= " OR fid = '".$forumid."'";
} else {
$forums .= "'".$forumid."'";
}
$i++;
}
} else {
$forums = "'".$fid."'";
}
$query = $db->query("
SELECT t.*, t.username AS threadusername, u.username, u.avatar
FROM ".TABLE_PREFIX."threads t
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid = t.uid)
WHERE fid = ".$forums." AND t.visible='1' AND t.closed NOT LIKE 'moved|%'
ORDER BY t.dateline DESC
LIMIT 0, ".$limit
);
while($announcement = $db->fetch_array($query))
{
$announcement['message'] = $posts[$announcement['tid']]['message'];
$announcement['pid'] = $posts[$announcement['tid']]['pid'];
$announcement['author'] = $announcement['uid'];
if(!$announcement['username'])
{
$announcement['username'] = $announcement['threadusername'];
}
$announcement['subject'] = htmlspecialchars_uni($announcement['subject']);
$anndate = my_date($mybb->settings['dateformat'], $announcement['dateline']);
$anntime = my_date($mybb->settings['timeformat'], $announcement['dateline']);
$parser_options = array(
"allow_html" => $forum[$announcement['fid']]['allow_html'],
"allow_mycode" => $forum[$announcement['fid']]['allow_mycode'],
"allow_smilies" => $forum[$announcement['fid']]['allowsmilies'],
"allow_imgcode" => $forum[$announcement['fid']]['allowimgcode']
);
if($announcement['smilieoff'] == "yes")
{
$parser_options['allow_smilies'] = "no";
}
$announcement['message'] = $parser->parse_message($announcement['message'], $parser_options);
if(is_array($attachcache[$announcement['pid']]))
{ // This post has 1 or more attachments
$validationcount = 0;
$id = $announcement['pid'];
foreach($attachcache[$id] as $aid => $attachment)
{
if($attachment['visible'])
{ // There is an attachment thats visible!
$attachment['name'] = htmlspecialchars_uni($attachment['name']);
$attachment['filesize'] = get_friendly_size($attachment['filesize']);
$ext = get_extension($attachment['filename']);
if($ext == "jpeg" || $ext == "gif" || $ext == "bmp" || $ext == "png" || $ext == "jpg")
{
$isimage = true;
}
else
{
$isimage = false;
}
$attachment['icon'] = get_attachment_icon($ext);
// Support for [attachment=id] code
if(stripos($announcement['message'], "[attachment=".$attachment['aid']."]") !== false)
{
if($attachment['thumbnail'] != "SMALL" && $attachment['thumbnail'] != '')
{ // We have a thumbnail to show (and its not the "SMALL" enough image
eval("\$attbit = \"".$templates->get("postbit_attachments_thumbnails_thumbnail")."\";");
}
elseif($attachment['thumbnail'] == "SMALL" && $forumpermissions[$announcement['fid']]['candlattachments'] == "yes")
{
// Image is small enough to show - no thumbnail
eval("\$attbit = \"".$templates->get("postbit_attachments_images_image")."\";");
}
else
{
// Show standard link to attachment
eval("\$attbit = \"".$templates->get("postbit_attachments_attachment")."\";");
}
$announcement['message'] = preg_replace("#\[attachment=".$attachment['aid']."]#si", $attbit, $announcement['message']);
}
}
else
{
$validationcount++;
}
}
}
$announcement['message'] = html_entity_decode(str_replace('attachment.php','forums/attachment.php',$announcement['message']));
unset($post);
$announcement['dateline'] = my_date("jS F Y" , $announcement['dateline'], "", 0);
$announcements[] = $announcement;
}
return $announcements;
}
function lastxposts($db,$mybb,$limit,$trim,$dateformat,$timeformat) {
$unviewable = get_unviewable_forums();
if($unviewable)
{
$unviewwhere = " AND fid NOT IN ($unviewable)";
}
$threadlist = array();
$query = $db->query("
SELECT t.*, u.username
FROM ".TABLE_PREFIX."threads t
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=t.uid)
WHERE 1=1 $unviewwhere AND t.visible='1' AND t.closed NOT LIKE 'moved|%'
ORDER BY t.lastpost DESC
LIMIT 0, ".$limit
);
while($thread = $db->fetch_array($query))
{
$thread['lastpostdate'] = my_date($dateformat, $thread['lastpost']);
$thread['lastposttime'] = my_date($timeformat, $thread['lastpost']);
if ($trim > 0) {
if(my_strlen($thread['subject']) > $trim)
{
$thread['subject'] = trim(my_substr($thread['subject'], 0, $trim)) . "...";
}
$thread['subject'] = htmlspecialchars_uni($thread['subject']);
$threadlist[] = $thread;
}
}
return $threadlist;
}
}
?>
Une fois le fichier créé, on passe à l’etape suivante :
2. Pour installer ce fichier dans le repertoire des snippets, une fois loggé sur le manager de MODx :
2.1. cliquez sur l’onglet Ressources puis sur le sous-menu gestion des fichiers.
2.2. Dans l’arboresance des fichiers, cliquez sur le repertoire assets, puis le repertoire snippets.
2.3. Cliquez sur l’action nouveau dossier, puis créer un dossier nommé mybb.
2.3. Une fois dans ce répertoire mybb, uploadez le fichier mybb_functions.php créé plus tôt.
Le noyau de fonctions a été uploadé, mais il reste une seconde étape importante, l’installation du snippet lui même.
3. Dans votre manager MODx, cliquez sur l’onglet Ressources puis sur le sous-menu Gestion Ressources.
3.1. Cliquez sur le lien Nouveau snippet tout en haut de la liste des snippets, puis donnez au snippet créé le nom MyBB.
3.2. Copiez et collez le code suivant ci-dessous, dans la boite de dialogue PHP puis enregistrez le script en cliquant sur le bouton enregistrer.
Le snippet qui gère le script a maintenant été installé.
config['base_path'] . "assets/snippets/mybb/";
// Required globals to make this work
global $mybb, $db, $cache, $plugins, $displaygroupfields, $grouppermignore, $groupzerogreater, $lang, $fpermfields;
// Get our usable functions
require_once($snippet_path.'mybb_functions.php');
// Un-comment to get a lot of MyBB vars.
//echo "<pre>";
//print_r($mybb);
//echo "</pre>";
//exit;
// So what are we doing?
switch ($get_me_my) {
### Display user info based on forum group settings ###
case 'userinfo':
// Default groups: Guest = 1, Member = 2, Super Moderator = 3, Admin = 4, Validating = 5, Moderator = 6, Banned = 7
// Pass the board URL
$modx->setPlaceholder('mybb.url', $mybb->settings['bburl']);
if (($mybb->user['usergroup'] == 1) || ($mybb->user['usergroup'] == 5) || ($mybb->user['usergroup'] == 7)) {
// For guests...
$modx->setPlaceholder('mybb.showuserinfo', '{{MyBB_UserLoggedOut}}');
} else {
// For everyone else...
// Get new topic and post info
$newinfo = latestposts($db,$mybb);
$modx->setPlaceholder('mybb.uid', $mybb->user['uid']);
$modx->setPlaceholder('mybb.username', $mybb->user['username']);
$modx->setPlaceholder('mybb.newmsg', (integer)$mybb->user['pms_new']);
$modx->setPlaceholder('mybb.newtopic', $newinfo['newthreads']);
$modx->setPlaceholder('mybb.newpost', $newinfo['newposts']);
$modx->setPlaceholder('mybb.showuserinfo', '{{MyBB_UserLoggedIn}}');
}
break;
### Show forum statistics ###
case 'stats':
// Grab the stats from the forum cache
$stats = $cache->read("stats");
// Parse the stats template
$modx->setPlaceholder('mybb.nummembers', $stats['numusers']);
$modx->setPlaceholder('mybb.numthreads', $stats['numthreads']);
$modx->setPlaceholder('mybb.numposts', $stats['numposts']);
$modx->setPlaceholder('mybb.newmember', $stats['lastusername']);
$modx->setPlaceholder('mybb.newuid', $stats['lastuid']);
break;
### Show online users ###
case 'online':
$online = onlinelist($db,$mybb,$cache);
// What shall we separate the list of users with? A comma, a middot, or anything else of your choice.
$separator = ' · ';
// When displaying online users, shall we apply colouring styles to their name as in the forums for different groups?
$forumstyle = 1;
$modx->setPlaceholder('mybb.numonline', $online['count']);
$modx->setPlaceholder('mybb.numguests', $online['guests']);
$modx->setPlaceholder('mybb.nummembers', $online['members']);
// Go through online users if there are any and put together a list
if ($online['members'] >= 1) {
$onlinelist = '';
$i = 1;
foreach ($online['users'] as $user) {
if ($forumstyle == 1) {
$onlinelist .= '<a>settings['url'].'/member.php?action=profile&uid='.$user['uid'].'">'.$user['forumnamestyle'].'</a>';
} else {
$onlinelist .= '<a>settings['url'].'/member.php?action=profile&uid='.$user['uid'].'">'.$user['name'].'</a>';
}
if ($i setPlaceholder('mybb.showlist', $onlinelist);
$modx->setPlaceholder('mybb.onlinelist', '{{MyBB_OnlineList}}');
}
break;
### Show forum topics (news headlines) ###
// Sample call -
// Change the forum topics are grabbed from by changing the fid to your news forum's ID.
// To get topics from more than one forum, separate your fid's wtith a comma eg. &fid=2,3,6,11
// Change number of topics returned by changing the limit to whatever you desire. A really high limit will return more topics and slow your page down though!
case 'headlines':
$modx->setPlaceholder('mybb.url', $mybb->settings['bburl']);
$fid = (isset($fid))? $fid : 2;
$limit = (isset($limit))? $limit : 10;
$headlines = headlines($db,$mybb,$cache,$templates,$parser,$fid,$limit);
$articlelist = "";
$i = 1;
if (!empty($headlines)) {
foreach ($headlines as $headline) {
$modx->setPlaceholder('mybb.arttitle', $headline['subject']);
$modx->setPlaceholder('mybb.artdate', $headline['dateline']);
$modx->setPlaceholder('mybb.artcontent', $headline['message']);
$modx->setPlaceholder('mybb.artauthor', $headline['username']);
$modx->setPlaceholder('mybb.artid', $headline['tid']);
$modx->setPlaceholder('mybb.artcomments', $headline['replies']);
// Very fancy and un-documented MODx function - lucky I found it or I'd have template bits in my snippet (eww!)
$articlelist .= $modx->mergePlaceholderContent($modx->mergeChunkContent("{{MyBB_NewsArticle}}"));
// Add a divider chunk below every article except the last one. Counting the headlines array instead of using our $limit variable in case there's less than $limit articles returned in the query y'see?
if ($i setPlaceholder('mybb.newsarticles', $articlelist);
break;
### Show latest posts ###
// Sample call -
// Change limit to the number of latest posts you want to display.
// Change the trim to how many characters you want the title to be trimmed to. Set to zero to skip trimming.
// Change the format the date and time are displayed in as per www.php.net/date
case 'latest_posts':
$modx->setPlaceholder('mybb.url', $mybb->settings['bburl']);
$limit = (isset($limit))? $limit : 5;
$trim = (isset($trim))? $trim : 25;
$dateformat = "jS M 'y";
$timeformat = "g:ia";
$lastxposts = lastxposts($db,$mybb,$limit,$trim,$dateformat,$timeformat);
$postlist = "";
$i = 1;
if (!empty($lastxposts)) {
foreach ($lastxposts as $post) {
$modx->setPlaceholder('mybb.postid', $post['tid']);
$modx->setPlaceholder('mybb.posttitle', $post['subject']);
$modx->setPlaceholder('mybb.postdate', $post['lastpostdate']);
$modx->setPlaceholder('mybb.posttime', $post['lastposttime']);
//if ($post['lastposteruid']
$modx->setPlaceholder('mybb.postauthor', $post['lastposter']);
// Very fancy and un-documented MODx function - lucky I found it or I'd have template bits in my snippet (eww!)
$postlist .= $modx->mergePlaceholderContent($modx->mergeChunkContent("{{MyBB_LatestPost}}"));
$i++;
}
} else {
$postlist = "There are no topics to display.";
}
$modx->setPlaceholder('mybb.lastxposts', $postlist);
break;
### Show upcoming events ###
// Sample call -
// Change limit to the number of events you want to display.
// Change the trim to how many characters you want the title to be trimmed to. Set to zero to skip trimming.
// Change the format the date and time are displayed in as per www.php.net/date
case 'upcoming_events':
$modx->setPlaceholder('mybb.url', $mybb->settings['bburl']);
$limit = (isset($limit))? $limit : 5;
$trim = (isset($trim))? $trim : 25;
$dateformat = "jS M 'y";
$nextxevents = nextxevents($db,$mybb,$limit,$trim,$dateformat);
$eventlist = "";
$i = 1;
if (!empty($nextxevents)) {
foreach ($nextxevents as $event) {
$modx->setPlaceholder('mybb.eventid', $event['eid']);
if (isset($event['short_subject'])) {
$modx->setPlaceholder('mybb.eventtitle', $event['short_subject']);
} else {
$modx->setPlaceholder('mybb.eventtitle', $event['subject']);
}
$modx->setPlaceholder('mybb.eventalt', $event['subject']);
$modx->setPlaceholder('mybb.eventdate', $event['format_date']);
// Very fancy and un-documented MODx function - lucky I found it or I'd have template bits in my snippet (eww!)
$eventlist .= $modx->mergePlaceholderContent($modx->mergeChunkContent("{{MyBB_UpcomingEvent}}"));
$i++;
}
} else {
$eventlist = "There are no events to display.";
}
$modx->setPlaceholder('mybb.nextxevents', $eventlist);
break;
### Pass me my slippers and pipe ###
case 'slippers_n_pipe':
echo "Mmmf... that's better. Now fetch me a cup of Earl Grey.";
break;
}
return '';
?>
En lisant ce script, vous remarquerez que l’auteur du script, Pete, est un homme plein d’humour anglais.
4. Il nous reste encore une dernière étape, dans le manager MODx toujours, cliquez sur l’onglet ressource, puis sur le sous-menu gestion des ressources, et enfin dans l’onglet Gestion des CHunks.
4.1. Cliquez sur le lien Nouveau Chunk et entrez le nom du chunk puis son code dans la boite de dialogue de chacun des chunks ci dessous.
MyBB_LatestPost
<li> <strong><a href="[+mybb.url+]/showthread.php?tid=[+mybb.postid+]"> [+mybb.posttitle+]</a></strong><br /> posted [+mybb.postdate+] at [+mybb.posttime+] by [+mybb.postauthor+] </li>
MyBB_LatestPosts
&limit - the number of topic titles you want to display
&trim - the number of characters you wish to trim event titles down to. Change to zero if you want to grab the full title.
[!MyBB? &get_me_my=`latest_posts` &limit=5 &trim=25!] <h3>Latest Posts</h3> <br /> <ul> [+mybb.lastxposts+] </ul>
MyBB_NewsArticle
<h4>[+mybb.arttitle+]</h4> <h5>Posted on [+mybb.artdate+] by [+mybb.artauthor+]</h5> <br /> [+mybb.artcontent+]<br /> <br /> <a href="[+mybb.url+]/showthread.php?tid=[+mybb.artid+]">View Comments ([+mybb.artcomments+])</a> · <a href="[+mybb.url+]/printthread.php?tid=[+mybb.artid+]">Print Article</a> · <a href="[+mybb.url+]/showthread.php?tid=[+mybb.artid+]">Post Comment</a>
MyBB_NewsDivider
<br /> <br /> <div style="border-top-style:dotted;border-top-color:#cccccc;border-top-width:1px;"> </div>
MyBB_NewsHeadlines
&fid - the forum ID you wish to get topics from. Separatemultiple forum IDs with a comma to grab topics from multiple forums eg. &fid=2,3,16
&limit - the number of topics you want to display
[!MyBB? &get_me_my=`headlines` &fid=2 &limit=10!] <h3>News Headlines</h3> <br /> [+mybb.newsarticles+]
MyBB_Online
[!MyBB? &get_me_my=`online`!] <h2>Users Online</h2> <ul> <li>[+mybb.numonline+] users online</li> <li>[+mybb.numguests+] guests</li> <li>[+mybb.nummembers+] members</li> [+mybb.onlinelist+]<br /> <li><a href="[+mybb.url+]/online.php">View Details</a></li> </ul>
MyBB_OnlineList
<br /> [+mybb.showlist+] <br />
MyBB_Showstats
[!MyBB? &get_me_my=`stats`!] <h2>Site Statistics</h2> <ul> <li>[+mybb.nummembers+] members</li> <li>[+mybb.numthreads+] threads</li> <li>[+mybb.numposts+] posts</li> <br /> <li>Newest member: <a href="[+mybb.url+]/member.php?action=profile&uid=[+mybb.newuid+]">[+mybb.newmember+]</a></li> </ul>
MyBB_UpcomingEvent
<li> <strong><a href="[+mybb.url+]/calendar.php?action=event&eid=[+mybb.eventid+]" title="[+mybb.eventalt+]">[+mybb.eventtitle+]</a></strong> - [+mybb.eventdate+] </li>
MyBB_UpcomingEvents
&limit – the number of events you want to display.
&trim - the number of characters you wish to trim event titles down to. Change to zero if you want to grab the full title.
[!MyBB? &get_me_my=`upcoming_events` &limit=5 &trim=25!] <h3>Upcoming Events</h3> <br /> <ul> [+mybb.nextxevents+] </ul>
MyBB_UserInfo
[!MyBB? &get_me_my=`userinfo`!] [+mybb.showuserinfo+]
MyBB_UserLoggedIn
<h2>Welcome [+mybb.username+]!</h2> <ul> <li><a href="[+mybb.url+]/usercp.php">Control Panel</a></li> <li><a href="[+mybb.url+]/private.php">[+mybb.newmsg+] new messages</a></li> <li><a href="[+mybb.url+]/search.php?action=getnew">[+mybb.newtopic+] new topics</a></li> <li><a href="[+mybb.url+]/search.php?action=getnew">[+mybb.newpost+] new posts</a></li> <br /> <li><a href="[+mybb.url+]/member.php?action=logout&uid=[+mybb.uid+]">Log Out</a></li> </ul>
MyBB_UserLoggedOut
<h2>Welcome Guest!</h2> <ul> <li><a href="[+mybb.url+]/member.php?action=login">Log In</a></li> <li><a href="[+mybb.url+]/member.php?action=register">Register</a></li> </ul>
Voili voila voilou. Avec ces tout ces bouts de codes, que vous adapterez à votre guise, vous pouvez appeler les chunks dans toutes vos templates et pages.
Inclusions dans les templates:
* {{MyBB_UserInfo}}
* {{MyBB_ShowStats}}
* {{MyBB_Online}}
Inclusions dans les pages:
* {{MyBB_LatestPosts}}
* {{MyBB_UpcomingEvents}}
* {{MyBB_NewsHeadlines}}
Vous pouvez bien sur, les appeler d’ou vous voulez, mais les fonctions UserInfo, ShowStats et autres chunks de statut utilisateurs apparaissent généralement sur chaque page, il est donc plus logique de les ajouter dans votre modèle de template et le reste seulement dans les pages où vous en aurez besoin.
Si vous souhaitez réutiliser cette traduction sur votre n’hesitez pas, n’oubliez pas de mentionner vos sources ;)
source: http://www.acronymity.co.uk/projects/mybb_bolt_on/instructions.html
Désactiver le scrolling d’une page web
Un court article pour publier une fonction bien utile en javascript.
Il s’agit de pouvoir neutraliser le scrolling d’une page momentanément.
Je m’en sers pour descativer les ascenseur lors de l’ouverture d’une lightbox maison dont je publierai prochainement le code je pense.
coté javascript, le code est des plus simple :
function Swap_Scroll( etat_){
if( etat_)
document.body.style.overflow = "hidden";
else
document.body.style.overflow = "";
}
coté html, il suffit alors d’appeler la fonction Swap_Scroll() via un lien, un bouton ou autre …
<a href="javascript:void(0);" onclick="Swap_Scroll();">Activer SCROLL</a><br> <a href="javascript:void(0);" onclick="Swap_Scroll(1);">Desactiver SCROLL</a>
Les popups en Javascript
Avec le retour en force de javascript au moyen de l’ AJAX, on en oublierait presque les fonctions javascript classiques. Cependant, et parfois pour gagner du temps, il peut être utile de devoir créer des popups dans l’urgence pour séparer du contenu particulier de la page principale.
Nous allons rappeler ici les fonctions principales pour manipuler les popups, ainsi que les attributs les plus courants pour modeler les fenêtres popup générées.
Générer un popup
La fonction javascript utilisée pour générer une nouvelle fenêtre est la fonction open().
On l’écrira sous la forme :
window.open(URL,NOM,'ARGUMENTS')
URL : le lien url de la page à ouvrir.
NOM : le nom de la fenêtre générée et qui permettra de la manipuler ce nom ne doit pas contenir de majuscule, espace, tiret, caractères spéciaux ou caractères accentués.
ARGUMENTS : les attributs de la fenêtre ceux-ci doivent être écris à la suite, séparés par des virgule et sans aucun espace, aucun des attributs n’est obligatoire.
Voici une liste des arguments utilisables dans cette fonction :
- width : largeur de la fenêtre, en pixels.
- height : hauteur de la fenêtre, en pixels.
- top : position de la fenêtre par rapport au haut de l’écran, en pixels.
- left : position de la fenêtre par rapport à la droite de l’écran, en pixels.
- location : affiche les barres d’adresses du navigateur ( yes ou 1 ).
- menubar : affiche la barre de menu du navigateur ( yes ou 1 ).
- toolbar : affiche la barre d’outils du navigateur ( yes ou 1 ).
- directories : affiche la barre des liens en bas de page ( yes ou 1 ).
-status : affiche la barre de statut en bas de page ( yes ou 1 ).
- scrollbars : active les ascenseurs de la fenêtre ( yes ou 1 ).
- resizable : permet de redimensionner la fenetre ( yes ou 1 ).
- fullscreen : affiche la fenêtre en pleine page ( yes ou 1 ).
- channelmode : affiche la fenêtre en plein écran ( équivalent de F11 du navigateur ) ( yes ou 1 ).
- dependent : ferme les fenêtres filles si la fenêtre appelante est fermée ( yes ou 1 ).
On peut générer une popup à partir d’un lien, d’un bouton, d’une balise rendue cliquable ou même au lancement de la page.
On pourra souhaiter de centrer le popup pour l’utilisateur. On remplacera alors les valeurs en pixel pour les arguments width et heights par :
(screen.availHeight-h)/2 (screen.availWidth-l)/2
Fermer un popup
On utilise la fonction window.close() pour fermer un popup. On aura par exemple un lien du type :
<a href="#" onclick="window.close()">fermer la fenêtre</a>
On peut également fermer le popup depuis la page mère en remplaçant l’objet window par le nom du popup :
Par exemple pour fermer la popup ‘sam1’ on emploiera :
sam1.close() //fermer la popup depuis la page mère
Autres manipulations
Dans les autres manipulations courantes, on peut être amené par exemple à recharger le popup :
window.location.reload(); //recharger la popup courante
A l’inverse, on peut être amené à recharger la page mère pour rendre effectives visuellement des modifications effectuées via un formulaire popup.
pour cela on utilisera :
self.opener.location.reload(); //recharger la page mère du popup
Tous les navigateurs actuels bloquent les popup par défaut, leur usage n’est donc pas des plus recommandé. On préférera afficher du contenu depuis des balises interne à la page courante ( via javascript et css ), ou en utilisant directement de l’Ajax avec les nombreux scripts de lightboxes et autres modalboxes existant. Ca sera le sujet d’un prochain article d’ailleurs.
j’adjoint toujours en fn d’artciles, les meilleurs sources documentaires qui m’ont permit de rediger cet article. Vous trouverez parfois une documentation bien plus fournie par ces liens.
Références :
- http://wiki.mediabox.fr/tutoriaux/javascript/popup
- http://www.tizag.com/javascriptT/javascriptpopups.php
- http://www.zone-webmasters.net/publications/26-popup-en-javascript.html