Astuces Forumactif
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Membres connectés récemment
Voir tous les membres

[AWESOMEBB] Adapter un code pour afficher les événements du calendrier dans un widget


4 participants

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

Tony L
Tony L
https://diamant-mandarin-co.forumactif.com

MessageTony L Jeu 21 Mar 2019 - 21:07

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 :

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


Dernière édition par Tony L le Sam 4 Mai 2019 - 15:40, édité 1 fois
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Sam 23 Mar 2019 - 7:03

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:
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!!
no_way
https://www.qwant.com

Messageno_way Dim 24 Mar 2019 - 21:50

Bonsoir, j'ai fait un code indépendant de jQuery, je le mets caché pour le moment:

Il s'agit d'une classe en mesure de récupérer la maximum d'informations peu importe la version du forum, il est primordial qu'elle ne soit déclarée qu'une seule et unique fois.


Dernière édition par no_way le Sam 4 Mai 2019 - 12:22, édité 1 fois
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Lun 25 Mar 2019 - 7:34

Hello Arnaud,
merci beaucoup, je vais tâcher de trouver comment extraire tous les évènements
vers une div.
Tony L
Tony L
https://diamant-mandarin-co.forumactif.com

MessageTony L Lun 25 Mar 2019 - 22:04

Bonsoir Philippe et Arnaud,


En tous cas merci pour cette aide, ça ne m'à l'air pas très simple à adapter.


hinhin
Tony L
Tony L
https://diamant-mandarin-co.forumactif.com

MessageTony L Mar 30 Avr 2019 - 22:31

Bonsoir Arnaud et Philippe,


En revoyant le sujet, je me demandé si il était possible de le rendre fonctionnelle. Reste t-il beaucoup de travail ?

Cordialement,
Tony
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mer 1 Mai 2019 - 6:16

Hello Tony,
j'ai remonté ta demande dans l'entraide, étonnant qu'elle se trouvait a se balader dans un autre fofo!!

En revoyant le sujet, je me demandé si il était possible de le rendre fonctionnelle. Reste t-il beaucoup de travail ?


Je n'ai pas eu le temps de m'y pencher très sincèrement Tony ...
Tony L
Tony L
https://diamant-mandarin-co.forumactif.com

MessageTony L Mer 1 Mai 2019 - 19:08

Hello Philippe,


Il y a d'autres choses bien plus importantes, d'autant plus le 1er mai !  clin oeil
C'est déjà génial tout se qui est proposé sur ton forum et je l’apprécie d'avantage dans sa version revue depuis ce nouveau départ.

Bonnes soirée à tous et à toutes
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mer 1 Mai 2019 - 19:34


C'est déjà génial tout se qui est proposé sur ton forum et je l’apprécie d'avantage dans sa version revue depuis ce nouveau départ.

Merci , c'est gentil mon ami clin oeil
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Jeu 2 Mai 2019 - 18:22

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 clin oeil .



Tony L
Tony L
https://diamant-mandarin-co.forumactif.com

MessageTony L Jeu 2 Mai 2019 - 21:23

Bonsoir Philippe,

Ok, ça marche clin oeil

Bonne soirée
no_way
https://www.qwant.com

Messageno_way Jeu 2 Mai 2019 - 23:49

Ola je zieute ça ce week-end sans faute ;)
no_way
https://www.qwant.com

Messageno_way Ven 3 Mai 2019 - 11:54

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");
                    }
                }
            }
        }
    });
};
Tony L
Tony L
https://diamant-mandarin-co.forumactif.com

MessageTony L Ven 3 Mai 2019 - 16:39

Hello Arnaud,

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 ?
no_way
https://www.qwant.com

Messageno_way Ven 3 Mai 2019 - 22:44

Ola, oui c'était bien ce qu'il fallait faire mais je ne vois pas de widget activé, s'agit-il bien du forum indiqué sur ton profil ?
Tony L
Tony L
https://diamant-mandarin-co.forumactif.com

MessageTony L Sam 4 Mai 2019 - 10:58

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
no_way
https://www.qwant.com

Messageno_way Sam 4 Mai 2019 - 11:47

Il semble que tu aies oublié d'ajouter la classe calendrier à ton forum, ajoutes le premier script que je t'ai fourni et vérifie que tu l'actives bien sur toutes les pages ;)
Tony L
Tony L
https://diamant-mandarin-co.forumactif.com

MessageTony L Sam 4 Mai 2019 - 12:00

J'ai bien mis le script sur toutes les pages et la gestion du javascript est activé.

Comment ajouter la classe calendrier stp ? C'est peut être dû au faite que cette version de forum est encore en Béta..
no_way
https://www.qwant.com

Messageno_way Sam 4 Mai 2019 - 12:14

En ajoutant le premier code javascript que je t'ai fourni.
Pas de souci par rapport au fait que AwesomebBB soit en bêta.
Tony L
Tony L
https://diamant-mandarin-co.forumactif.com

MessageTony L Sam 4 Mai 2019 - 12:18

Ok, je viens de l'ajouter, j'ai désactivé le second.
Pas de changement sur le widget de mon coté
no_way
https://www.qwant.com

Messageno_way Sam 4 Mai 2019 - 12:22

Le premier script fourni est une classe, le dernier script manipule la-dite classe, les deux travaillent de concert donc il faut qu'ils soient tous deux activés :)
Tony L
Tony L
https://diamant-mandarin-co.forumactif.com

MessageTony L Sam 4 Mai 2019 - 12:29

Oups ok :)

Je les aient activés tous deux sur toutes les pages. Je ne vois pas de changement dans le widget
no_way
https://www.qwant.com

Messageno_way Sam 4 Mai 2019 - 12:33

Désolé mais je ne vois toujours pas la classe calendrier, peux-tu me fournir un compte admin sur ton forum de test afin de régler plus rapidement ce souci.
Tony L
Tony L
https://diamant-mandarin-co.forumactif.com

MessageTony L Sam 4 Mai 2019 - 12:35

Ok, je l'envoie par MP :)
no_way
https://www.qwant.com

Messageno_way Sam 4 Mai 2019 - 12:52

Voila qui est installé, tu avais pris l'ancien code ça ne pouvait donc pas marcher ;)

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut

Créer un compte ou se connecter pour répondre

Vous devez être membre pour répondre.

S'enregistrer

Rejoignez notre communauté ! C'est facile !


S'enregistrer

Connexion

Vous êtes déjà membre ? Aucun soucis, cliquez ici pour vous connecter.


Connexion

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum