Membres connectés récemment
[AWESOMEBB] Adapter un code pour afficher les événements du calendrier dans un widget
4 participants
Page 1 sur 2 • Partagez
Page 1 sur 2 • 1, 2
Bonsoir à tous,
Je suis passé dernièrement sur la version awesomeBB.
De ce fait j'ai plusieurs codes qui ne sont plus adaptés (ils étaient prévus pour la version punbb).
Notamment j'avais un code qui récupéré les événements qui étaient dans le calendrier pour les afficher dans un widget, celui ci :
Ma demande est donc de savoir quelles modifications ils faut faire pour qu'il fonctionne à nouveau svp.
Merci de l'aide,
Tony
Je suis passé dernièrement sur la version awesomeBB.
De ce fait j'ai plusieurs codes qui ne sont plus adaptés (ils étaient prévus pour la version punbb).
Notamment j'avais un code qui récupéré les événements qui étaient dans le calendrier pour les afficher dans un widget, celui ci :
- Code:
$(function(){(function(){
try{
var max_jours=999;
var tri=[],i=0,ii,d=new Date(),$liste=$("<ul>",{class:'mon_calendrier'}),genObjet=function(d){
try{
var a,b=[],d=d;
$('#main-content table.table.calendar td[class^="row"]',d).each(function(i,e){
var $e=$(e),oC={},AAAA,MM,JJ;
oC[i]={},oC=oC[i];
oC.evenements=false;
oC.anniversaires=false;
oC.date=$e.find('p').eq(0).text();
//Timestamps
oC.annee=/\d{4}/.exec(oC.date)[0]*1;
oC.jour=/\d{2}/.exec(oC.date)[0]*1;
//Un peu plus compliqué pour le mois
oC.date.replace(/[^\s]{3,4}(?=\s+\d{4})/,function($$){
var mois=['jan','fév','mar','avr','mai','juin','juil','aoû','sep','oct','nov','déc'];
oC.mois=mois.indexOf($$.toLowerCase());
});
//Création d'un timestamp déterminant le début du jour
oC.dJ_timestamp=(new Date(oC.annee,oC.mois,oC.jour,0,0,0,0)).getTime();
//Création d'un timestamp déterminant la fin du jour
oC.fJ_timestamp=oC.dJ_timestamp+86400000;
//on incrémente de 1 le mois
oC.mois+=1;
//Le jour dans le calendrier est stocké.
oC.object=$e;
if(!$e.find('ul a.genmed').length){b.push(oC);return}
a=$e.find('ul a.genmed');
a.each(function(i,e){
$(e).each(function(ii,e){
var ev;
if(e.href.indexOf('display=birth')!=-1){
!oC.anniversaires&&(oC.anniversaires={});
oC.anniversaires[i]={};
ev=oC.anniversaires[i]}else{
!oC.evenements&&(oC.evenements={});
oC.evenements[i]={};
ev=oC.evenements[i]}
ev.titre=$(e).text();
ev.html=$(e).parents('li').eq(0).html();
})
});
b.push(oC);
});
return b}catch(e){console.log(e)}
},nouvelle_url=function(){
var AAAA,MM;
AAAA=d.getFullYear();
MM=d.getMonth()+1+i;
if(!(MM<=12)){AAAA+=1;MM=1;}
if(MM<10)MM='0'+MM;
i++;
return '/calendar?start='+AAAA+MM+'01';
};
$.when(
$.ajax({method:'GET',cache:false,url:nouvelle_url()}),
$.ajax({method:'GET',cache:false,url:nouvelle_url()}),
$.ajax({method:'GET',cache:false,url:nouvelle_url()})
).done(function(){
'use strict';
var date=(new Date()).getTime(),i,ii,mois=[],tri=[];
/*
C'est la fonction genObjet déclarée plus haut qui crée un objet avec tous les jours du mois.
On l'utilise sur toutes les requêtes AJAX faites.
*/
for(i in arguments){
var d=arguments[i][0];
mois.push(genObjet(d));
}
/*On parcourt le tableau des mois*/
for(i in mois){/*1 mois*/
for(ii in mois[i]){/*1 jour*/
/*on teste pour chaque jour*/
if(date<mois[i][ii].fJ_timestamp&&mois[i][ii].evenements&&tri.length<max_jours)tri.push(mois[i][ii]);
}
}
/*
Notre tableau de tri contient à présent les jours où il y a un évènement à venir...
Il est temps de s'attaquer à la mise en forme de notre liste
*/
for(i in tri){
$("<li>",{class:'center date',text:tri[i].date}).appendTo($liste);
for(ii in tri[i].evenements){
$("<li>",{class:'center evenement'}).html(tri[i].evenements[ii].html).appendTo($liste)
}
}
/*
Et voila notre liste est déjà créée :O !
Ne nous reste donc plus qu'à l'ajouter à un élément du DOM disposant d'un identifiant,
prochains_evenements
par exemple.
*/
$liste.appendTo('#prochains_evenements');
}
);
}catch(e){console.log(e)}
})()});
Ma demande est donc de savoir quelles modifications ils faut faire pour qu'il fonctionne à nouveau svp.
Merci de l'aide,
Tony
Hello Tony,
c'est encore une belle trouvaille de mon ami Arnaud @no_way .
Je n'arrive pas à le mettre en fonction surement dû à l'année (sous réserve) .
Arnaud dès qu'il le pourra (il est assez occupé actuellement) regardera ce qui cloche.
Pour information ,j'ai déposé la div suivante:
Dans la page d'accueil,car les widgets se trouvent en bas de page sur mon fofo de test et je ne sais pas pourquoi!!
c'est encore une belle trouvaille de mon ami Arnaud @no_way .
Je n'arrive pas à le mettre en fonction surement dû à l'année (sous réserve) .
Arnaud dès qu'il le pourra (il est assez occupé actuellement) regardera ce qui cloche.
Pour information ,j'ai déposé la div suivante:
- Code:
<div id="prochains_evenements">
</div>
Dans la page d'accueil,car les widgets se trouvent en bas de page sur mon fofo de test et je ne sais pas pourquoi!!
Re tony,
je n'arrive pas a trouver la parade pour l'adapter pour la version Awesomebb
Il faudra que Arnaud @no_way voit cela mais actuellement il est assez occupé.
On va laisser ton topic ouvert le temps qu'il faudra afin qu'il puisse jeter un œil.
Donc pas besoin de remonter ta demande comme sur le forum des forums .
je n'arrive pas a trouver la parade pour l'adapter pour la version Awesomebb
Il faudra que Arnaud @no_way voit cela mais actuellement il est assez occupé.
On va laisser ton topic ouvert le temps qu'il faudra afin qu'il puisse jeter un œil.
Donc pas besoin de remonter ta demande comme sur le forum des forums .
Ola voici un script pour exploiter la classe calendrier et afficher le tout dans ton widget, à tester:
- Code:
{
let d=new Date();
/*On compte extraire 3 mois du calendrier à partir du mois en cours*/
const moisCalendrier=[new calendrier().entrees(),new calendrier((d.setMonth(d.getMonth()+1),d)).entrees(),new calendrier((d.setMonth(d.getMonth()+1),d)).entrees()];
Promise.all(moisCalendrier).then(v=>{
for(let entrees of v){
/*tri*/
let x=Object.getOwnPropertyNames(entrees).sort((c,f)=>{
return /\D*(\d{1,2})\D*/.exec(c)[1]</\D*(\d{1,2})\D*/.exec(f)[1]?-1:1;
});
/*Exploitation des données*/
for(let i of x){
let jour=entrees[i];
if(!jour.anniversaires&&!jour.evenements)continue;
$("<h4>",{text:jour.date,class:"date"}).appendTo("#prochains_evenements");
if(jour.anniversaires){
for(let a of jour.anniversaires){
$("<div>").append(a).addClass("anniversaire").appendTo("#prochains_evenements");
}
}
if(jour.evenements){
for(let a of jour.evenements){
$("<div>").append(a).addClass("evenement").appendTo("#prochains_evenements");
}
}
}
}
});
};
Hello Arnaud,
J'ai mis la div :
Dans le widget et ajouté le script sur toutes les pages. Il y a dans le calendrier un événement en juin.
Il n'y à pas eu de résultat affiché dans le widget et cela à effacé les publications qui étaient dans le widget dernières publications (j'ai désactivé le script pour que ce dernier widget refonctionne) .
Est-ce que c'était bien les manip. à effectuer pour un test ?
J'ai mis la div :
- Code:
<div id="prochains_evenements">
</div>
Dans le widget et ajouté le script sur toutes les pages. Il y a dans le calendrier un événement en juin.
Il n'y à pas eu de résultat affiché dans le widget et cela à effacé les publications qui étaient dans le widget dernières publications (j'ai désactivé le script pour que ce dernier widget refonctionne) .
Est-ce que c'était bien les manip. à effectuer pour un test ?
Hello Arnaud,
J'ai préféré l'enlever de mon forum officiel.
Je viens de le remettre sur un forum d'essai, widget : Prochains rassemblements.
http://forumessai.superforum.fr/portal
J'ai préféré l'enlever de mon forum officiel.
Je viens de le remettre sur un forum d'essai, widget : Prochains rassemblements.
http://forumessai.superforum.fr/portal
Page 1 sur 2 • 1, 2
Sujets similaires
» [AWESOMEBB] Aligner dans widget "récupérer mot de passe"
» [TOUTES VERSIONS]Afficher les derniers membres enregistrés dans un widget (ADMIN)
» [TOUTES VERSIONS]Afficher les scripts disponibles et désactivés dans un widget (ADMIN)
» AwesomeBB: Afficher une couleur de fond pour chaque catégorie
» [AwesomeBB] Lien dans le menu uniquement pour les administrateurs / invités
» [TOUTES VERSIONS]Afficher les derniers membres enregistrés dans un widget (ADMIN)
» [TOUTES VERSIONS]Afficher les scripts disponibles et désactivés dans un widget (ADMIN)
» AwesomeBB: Afficher une couleur de fond pour chaque catégorie
» [AwesomeBB] Lien dans le menu uniquement pour les administrateurs / invités
Créer un compte ou se connecter pour répondre
Vous devez être membre pour répondre.
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum