Modification d'une vue de type calendar pour insérer des dates récurrentes

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

J'ai créé une vue de type calendar avec des dates récurrentes.

Hors les dates récurrentes ne s'affichent pas dans les différentes cellules du calendrier (par mois dans mon exemple) mais toute dans la 1ère cellule.

Pourtant j'ai bien décoché la case 'Display all values in the same row' dans le paramétrage de mon champs date dans ma vue.

Il a fallut que je modifie la requête SQL de la vue car les dates ne sont pas accessibles immédiatement (du moins je n'ai pas réussi avec Views UI, donc j'ai préféré modifier directement ma requête, qui me renvoie les bons résultats).
Pour être plus clair, j'ai créé un type de contenu Profil qui contient un champ Tranche_horaire_nid qui est une entité référence vers un type de contenu Tranche horaire. Le type de contenu Tranche horaire contient une date récurrente (ou non, au choix de l'utilisateur) :
Profil
-field_trache_horaire_nid : entity reference vers Tranche Horaire (cardinalité illimité)

Tranche horaire
- field_tranche_horaire_date (date récurrente)

Ma vue calendar me permet d'afficher le planning d'un profil en fonction des différentes tranches horaires qu'il a créé.

Voici la requête SQL de la vue :

function ressourcesap_view_views_pre_execute(&$view)
{
    if ($view->name=='planning' and $view->current_display == 'month') {
        $profil_nid = $view->args[0];
        $date = $view->args[1];
        $query = db_select('node', 'th_node');
        $query->addField('th_node','title','node_title' );
        $query->addField('th_node','nid', 'nid');
        $query->addField('th_node','language','node_language');
        $query->addField('dth','field_tranche_horaire_date_value','field_data_field_tranche_horaire_date_field_tranche_horaire_' );
        $query->addField('dth','entity_type', 'field_data_field_tranche_horaire_date_node_entity_type');
        //$query->addField('dth','bundle', 'field_data_field_tranche_horaire_date_bundle');
        //$query->addField('dth','field_tranche_horaire_date_value2', 'field_data_field_tranche_horaire_date_field_tranche_horaire__1');
        //$query->addField('dth','field_tranche_horaire_date_rrule', 'field_data_field_tranche_horaire_date_field_tranche_horaire__2');
        $query->innerjoin('field_data_field_tranche_horaire_date','dth','th_node.nid = dth.entity_id');
        $query->innerjoin('field_data_field_tranche_horaire_nid','thn','th_node.nid = thn.field_tranche_horaire_nid_target_id');
        $query->innerjoin('node','profil_node','thn.entity_id = profil_node.nid');
        $query->where(" (th_node.status = '1') ");
        $query->where(" (profil_node.status = '1')");
        $query->where("( (DATE_FORMAT(ADDTIME(FROM_UNIXTIME(dth.field_tranche_horaire_date_value2), SEC_TO_TIME(3600)), '%Y-%m') >= '".$date."' AND DATE_FORMAT(ADDTIME(FROM_UNIXTIME(dth.field_tranche_horaire_date_value), SEC_TO_TIME(3600)), '%Y-%m') <= '".$date."') )");
        $query->where(" (profil_node.nid = '".$profil_nid."') ");
        $query->orderBy('dth.field_tranche_horaire_date_value');
        $view->build_info['query'] = $query;
  }

}

Cette requette fonctionne correctement.

Quand j'inspecte les valeurs du champs date de ma vue avec dpm(), la valeur multiple est positionné.

Je ne comprends pas pourquoi mes dates ne s'affichent pas dans plusieurs cellules.

Quelqu'un aurait-il une explication et pourrait m'aider ?

Merci d'avance.

Fabrice V.

Forum : 
Version de Drupal : 
Tags :