Intégrer Datatables à un index dans Bonfire

Le plugin DataTables pour jQuery est intégré par défaut à Bonfire (à partir de la version 0.7 a minima). Il permet d’ajouter différentes fonctionnalités à un tableau (tri par colonne, pagination, recherche plein texte…) et est particulièrement utile pour les pages index.php de Bonfire. Il est également utilisé dans le module « Activities » de l’application.

Intégration

Dans la fonction __construct() du contrôleur du module où vous souhaitez intégrer cette fonctionnalité, copier/coller les lignes suivantes :

$this->lang->load('datatable');
Assets::add_js(Template::theme_url('js/bootstrap.js'));
Assets::add_js( array ( Template::theme_url('js/jquery.dataTables.min.js' )) );
Assets::add_js( array ( Template::theme_url('js/bootstrap-dataTables.js' )) );
Assets::add_css( array ( Template::theme_url('css/datatable.css') ) ) ;
Assets::add_css( array ( Template::theme_url('css/bootstrap-dataTables.css') ) ) ;

Dans la fonction index() du même contrôleur, copier/coller la ligne suivante :

Assets::add_js($this->load->view('content/js', null, true), 'inline');

Parmi les vues du module, créer un fichier js.php avec le contenu suivant :

$("#flex_table").dataTable({
"sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
"sPaginationType": "bootstrap",
"iDisplayLength": <?php echo ($this->settings_lib->item('site.list_limit')) ? $this->settings_lib->item('site.list_limit') : 15; ?>,
"bInfo": true,
"bPaginate": true,
"bProcessing": true,
"bServerSide": false,
"bLengthChange": false,
"aaSorting": [[3,'desc']],
"bAutoWidth": true,
"oLanguage": {
"sProcessing":   "<?php echo lang('sProcessing') ?>",
"sLengthMenu":   "<?php echo lang('sLengthMenu') ?>",
"sZeroRecords":  "<?php echo lang('sZeroRecords') ?>",
"sInfo":         "<?php echo lang('sInfo') ?>",
"sInfoEmpty":    "<?php echo lang('sInfoEmpty') ?>",
"sInfoFiltered": "<?php echo lang('sInfoFiltered') ?>",
"sInfoPostFix":  "<?php echo lang('sInfoPostFix') ?>",
"sSearch":       "<?php echo lang('sSearch') ?>",
"sUrl":          "<?php echo lang('sUrl') ?>",
"oPaginate": {
"sFirst":    "<?php echo lang('sFirst') ?>",
"sPrevious": "<?php echo lang('sPrevious') ?>",
"sNext":     "<?php echo lang('sNext') ?>",
"sLast":     "<?php echo lang('sLast') ?>"
}
}
});

Enfin dans la vue index.php, ajouter à la table le paramètre suivant :

id="flex_table"

Sources :

Paramétrage

Le fichier js.php présenté ci-dessus est un exemple d’intégration, il est possible de paramétrer différentes options :

  • l’activation de la pagination : "bPaginate",
  • le style de pagination : "sPaginationType",
  • le tri par défaut au chargement de la page : "aaSorting",
  • l’affichage des informations sur les entrées affichées : "bInfo",
  • la largeur automatique des colonnes : "bAutoWidth",
  • le tri colonne par colonne : "aoColumns" avec les options { "bSortable": false } ou null

A noter que la version de DataTables actuellement embarquée dans Bonfire est la 1.9 et que DataTables est passé en 1.10. Cela n’enlève rien au fonctionnement du plugin.

Sources

Toutes les fonctionnalités et leur options sont décrites dans la documentation de DataTables 1.9 :

Publicités

Guide d’installation et de post-installation de Bonfire v0.6

Installation

Paramétrage du module de réécriture des URL dans Apache

  • activer le module dans httpd.conf en décommentant la ligne suivante :
    LoadModule rewrite_module modules/mod_rewrite.so
  • accorder l’accès en lecture au fichier .htacces en commentant les lignes suivantes :
    #<Files ".ht*">
    # Require all denied
    #</Files>

Paramétrage du fichier .htacess dans le dossier d’installation de Bonfire

  • activer le moteur de réécriture :
    RewriteEngine On
  • modifier la base du site avec :
    RewriteBase /install/

    si Bonfire est installé dans un sous-répertoire :

    RewriteBase /fodler/install/

Source : http://forums.cibonfire.com/discussion/1090/tip-how-to-fix-the-redirect-loop-during-install

Bugs à corriger après l’installation

Création d’un module basé sur une table existante

Si à la validation du formulaire de création, rien ne se passe, il faut remplacer la ligne 49 du fichier \bonfire\application\core_modules\builder\views\developer\modulebuilder_form.php comme suit :

<?php echo form_open(current_url() . "/" . $field_total, array('id'=>"module_form",'class'=>"form-horizontal")); ?>

Affichage d’un message d’erreur non bloquant lors de l’enregistrement d’une modification des paramètres de l’application (« Settings » > « Settings »)

Dans le fichier bonfire/codeigniter/database/DB_active_rec.php, supprimer les lignes suivantes (1401 à 1404) :

- else
- {
- $not[] = $k.'-'.$v;
- }

Sources :
http://forums.cibonfire.com/discussion/comment/3677#Comment_3677
https://github.com/ci-bonfire/Bonfire/commit/542b84a8